我的数据
这些数据来自一组发展中国家的一项大型调查。除其他外,这些数据包括每个答复国和地方区域(国内)的变量。
唯一的问题是,它不是将本地区域编码为字符串(例如“纽约”或“韦斯特切斯特县”),而是将其编码为数字,后者对应于码本中的区域列表。
我的问题
我想知道的是,是否有一种方法可以使使用代码本中的代码列表重新命名因素的过程自动化。每个区域前面都有一个数值和一个等号,后面紧跟着一个逗号。
这份清单采取以下形式:
1=New York, 2=Paris, 3=London, 4=Moscow, 5=Boston, ..., 230=Tblisi
是否有一些R代码允许我使用这个列表快速地重命名这个变量中的所有因素?
发布于 2016-01-09 04:24:20
如果您有一个带有向量的文本文件,如
1=New York, 2=Paris, 3=London, 4=Moscow, 5=Boston, ..., 230=Tblisi
你需要做一些调整,从数字中提取城市。例如,您可以:
library(stringr)
List <- c("1=New York", "2=Paris", "3=London", "4=Moscow", "5=Boston")
Cities <- data.frame(Orig = List)
Cities$CityNum <- str_extract(Cities$Orig, "[0-9]{1,}") # match the number at least once
Cities$City <- str_sub(Cities$Orig,
start = str_locate(Cities$Orig, "[A-Z]")[, 1],
end = str_length(Cities$Orig))
假设您在MyData中有一个名为"CityNum“的列,其中列出了数字.
MyData <- merge(MyData, Cities, by = CityNum)
我必须同意简明扼要的观点。:-)
发布于 2016-01-09 06:53:10
您可以在代码列表上使用strsplit
,然后将结果用作您的因素的级别和标签。
citylist <- c("1=New York", "2=Paris", "3=London", "4=Moscow", "5=Boston")
codes <- data.frame(do.call(rbind, strsplit(citylist, "="))) # Split and bind the result into a dataframe
set.seed(85)
mycities <- ceiling(runif(10, 0, 5)) # Generate some dummy data
mycities <- factor(mycities, levels = codes$X1, labels = codes$X2)
这意味着:
[1] London New York Paris Moscow London Boston New York New York New York
[10] Boston
Levels: New York Paris London Moscow Boston
https://stackoverflow.com/questions/34689320
复制相似问题