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

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

我有一个数据集

data
    Choice    Length Gender
 1       I subadults      M
 2       F subadults      M
 3       F subadults      M
 4       F subadults      M
 5       I subadults      M
 6       F subadults      M
 7       I subadults      M
 8       F subadults      M
 9       I subadults      M
 10      I subadults      M
 11      I subadults      M
 12      O subadults      M
 13      O subadults      M
 14      I subadults      M
 15      F subadults      M
 16      F subadults      M
 17      I subadults      M
 18      O subadults      M
 19      F subadults      M
 20      O subadults      M
 21      F subadults      M
 22      F    adults      M
 23      I    adults      M
 24      F    adults      M
 25      I    adults      M
 26      F    adults      M
 27      F    adults      M
 28      F    adults      M
 29      F    adults      M
 30      F    adults      M
 31      O    adults      M
 32      O    adults      M
 33      F    adults      F
 34      F    adults      F
 35      F    adults      F
 36      F    adults      F
 37      O    adults      F
 38      F    adults      F
 39      F    adults      F
 40      I subadults      F
 41      I subadults      F
 42      I subadults      F
 43      O subadults      F
 44      I subadults      F
 45      I subadults      F
 46      I subadults      F
 47      F subadults      F
 48      I subadults      F
 49      O subadults      F
 50      I subadults      F
 51      I    adults      F
 52      F    adults      F
 53      F    adults      F
 54      F    adults      F
 55      F    adults      F

现在我想将 Choice 列一分为三,因此数据集会像:
  F  I  O  Length    Gender
  1  0 20  subadults   F
  0  10 0  adults      F
  12 0  11  subadults  M
  0  10 0  adults      M

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

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

最佳答案

尝试:

require(reshape2)
data <- data.frame(choice = c('I', 'F', 'I', 'O', 'F', 'O'),
                   length = c('subadults', 'subadults', 'subadults', 'adults', 'adults', 'adults'),
                   gender = c('M', 'M', 'F', 'F', 'M', 'F'))

melt_data = melt(data, value.name = "value", id.vars = c("length", "gender"))

dcast(melt_data, gender+length ~ value)

  gender    length F I O
1      F    adults 0 0 2
2      F subadults 0 1 0
3      M    adults 1 0 0
4      M subadults 1 1 0

关于r - 如何用R中的其他变量将一列分成多列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30091974/

10-12 14:05