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

标签 r reshape

我有一个数据集

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/

相关文章:

R bnlearn Grow-Shrink 结构学习返回无向图

R确定图像宽度和高度(以像素为单位)

python - Numpy:二维数组的 reshape

使用多个度量变量 reshape 数据框

r - 连接绘图标签列表

r - 使用 purrr 来拟合许多使用 tidymodels 的模型

r - 如何在 kable/formattable 表中打印 unicode 符号?

r - R 中变量下一次出现的新列

r - 如何获取 (x,y,V) 行的表并获得一个矩阵/表,其中位置 x,y 处的值为 V

python - 关于特定数组及其最终形状的 Numpy 奇特索引问题?