我可以合并数据吗
name,#797,"Stachy, Poland"
at_rank,#797,1
to_center,#797,4.70
predicted,#797,4.70
根据第二列并取第一列作为列名?
name at_rank to_center predicted
#797 "Stachy, Poland" 1 4.70 4.70
根据要求,整套数据:http ://sprunge.us/cYSJ
我可以合并数据吗
name,#797,"Stachy, Poland"
at_rank,#797,1
to_center,#797,4.70
predicted,#797,4.70
根据第二列并取第一列作为列名?
name at_rank to_center predicted
#797 "Stachy, Poland" 1 4.70 4.70
根据要求,整套数据:http ://sprunge.us/cYSJ
如果您的带逗号的字符串被引用(它们似乎是),则读取数据的第一个问题应该不是问题。使用read.csv
withheader=FALSE
参数可以解决您共享的数据的问题。(当然,如果数据文件有标题,请删除该参数。)
从那里,你有几个选择。这里有两个。
reshape
(base R) 适用于此:
myDF <- read.csv("http://sprunge.us/cYSJ", header=FALSE)
myDF2 <- reshape(myDF, direction="wide", idvar="V2", timevar="V1")
head(myDF2)
# V2 V3.name V3.at_rank V3.to_center V3.predicted
# 1 #1 Kitoman 1 2.41 2.41
# 5 #2 Hosaena 2 4.23 9.25
# 9 #3 Vinzelles, Puy-de-Dôme 1 5.20 5.20
# 13 #4 Whitelee Wind Farm 6 3.29 8.07
# 17 #5 Steveville, Alberta 1 9.59 9.59
# 21 #6 Rocher, Ardèche 1 0.13 0.13
该reshape2
软件包在这些情况下也很有用。它的语法更简单,输出也更“干净”(至少在变量名方面)。
library(reshape2)
myDFw_2 <- dcast(myDF, V2 ~ V1)
# Using V3 as value column: use value.var to override.
head(myDFw_2)
# V2 at_rank name predicted to_center
# 1 #1 1 Kitoman 2.41 2.41
# 2 #10 4 Icaraí de Minas 6.07 8.19
# 3 #100 2 Scranton High School (Pennsylvania) 5.78 7.63
# 4 #1000 1 Bat & Ball Inn, Clanfield 2.17 2.17
# 5 #10000 3 Tăuteu 1.87 5.87
# 6 #10001 1 Oak Grove, Northumberland County, Virginia 5.84 5.84
看看reshape
哈德利的包裹。如果我理解正确,您只是将数据从长转向宽。
我认为在这种情况下,您真正需要做的就是转置,转换为 data.frame,将 colnames 设置为第一行,然后删除第一行。可能可以通过 data.frame 的某些参数组合跳过最后一步,但我不知道它们现在是什么。