4

我可以合并数据吗

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

4

3 回答 3

2

如果您的带逗号的字符串被引用(它们似乎是),则读取数据的第一个问题应该不是问题。使用read.csvwithheader=FALSE参数可以解决您共享的数据的问题。(当然,如果数据文件有标题,请删除该参数。)

从那里,你有几个选择。这里有两个。

  1. 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
    
  2. 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
    
于 2012-12-05T18:35:01.710 回答
1

看看reshape哈德利的包裹。如果我理解正确,您只是将数据从长转向宽。

于 2012-12-05T18:20:26.680 回答
0

我认为在这种情况下,您真正​​需要做的就是转置,转换为 data.frame,将 colnames 设置为第一行,然后删除第一行。可能可以通过 data.frame 的某些参数组合跳过最后一步,但我不知道它们现在是什么。

于 2012-12-05T18:27:14.140 回答