如何通过R中的其他变量将一列分成多列

时间:2015-05-07 04:31:22

标签: r reshape

我有一个数据集

async

现在我想将Choice列分成三列,因此数据集将如下:

await

其中F,I,O是长度和性别的总和。

我找不到R命令来执行此操作。有没有人可以帮助我? 非常感谢!严

3 个答案:

答案 0 :(得分:3)

尝试:

    double d = 1.7777777777777777777772;
    String s = d+"";
    int pos = s.indexOf(".");
    long value = 0;
    if(pos>=0){
        String frac = s.substring(pos+1);
        value = (long)Double.parseDouble(frac);
    }
    System.out.println(value);  

答案 1 :(得分:3)

在基础R中,需要考虑的两种方法是#btn:hover ~ .form-group input { background: #000; } ftable

此处aggregate

ftable

此处> ftable(mydf, col.vars = "Choice") Choice F I O Length Gender adults F 10 1 1 M 7 2 2 subadults F 1 8 2 M 9 8 4

aggregate

使用" data.table",您还可以尝试以下操作:

> aggregate(Choice ~ Length + Gender, mydf, table)
     Length Gender Choice.F Choice.I Choice.O
1    adults      F       10        1        1
2 subadults      F        1        8        2
3    adults      M        7        2        2
4 subadults      M        9        8        4

然而,as.data.table(mydf)[, as.list(table(Choice)), by = list(Length, Gender)] # Length Gender F I O # 1: subadults M 9 8 4 # 2: adults M 7 2 2 # 3: adults F 10 1 1 # 4: subadults F 1 8 2 将是更常见的方法:

dcast.data.table

使用" dplyr"和" tidyr",您可以尝试:

dcast.data.table(as.data.table(mydf), Length + Gender ~ Choice, value.var = "Choice")

答案 2 :(得分:1)

您可以尝试:

 reshape(as.data.frame(table(df)),
         idvar=c("Length","Gender"),
         timevar="Choice",direction="wide")
 #      Length Gender Freq.F Freq.I Freq.O
 #1     adults      F     10      1      1
 #4  subadults      F      1      8      2
 #7     adults      M      7      2      2
 #10 subadults      M      9      8      4

函数table为您提供每个ChoiceGenderLength作为多维数组的出现次数。然后,您强制使用包含4列的data.frame(上面的三列以及一个名为Freq的列,指示每个案例的出现次数),然后根据需要重新整形结果。

修改

我现在意识到我没有得到你的价值观。在这里,我计算了每个案例的发生次数。你的价值观是否正确?如果是这样,你如何得出这些价值观?