df <- data.frame(animal = c("dog", "dog", "cat", "dog", "cat", "cat"),
                 hunger = c(0, 1, 1, 0, 1,1))

我有一个类似于上面的数据框,它有两列,一列包含类别,另一列包含二进制数据.

我希望reshape 数据帧,将类别("动物")列拆分为两列,将"动物"列的值作为列名,将另一列(饥饿)的值作为单元格值,即

请注意,情况并非如此.

df <- data.frame(dog = c(0, 1, 0),
                 cat = c(1, 1, 1))

推荐答案

Update

如果不同类别之间的长度不一致,我们可以使用

list2DF(
  lapply(
    . <- unstack(rev(df)),
    `length<-`,
    max(lengths(.))
  )
)

list2DF(
  lapply(
    . <- unstack(df, hunger ~ animal),
    `length<-`,
    max(lengths(.))
  )
)

list2DF(
  lapply(
    . <- unstack(rev(df)),
    `length<-`,
    max(lengths(.))
  )
)

我们将获得

  cat dog
1   1   0
2   1   1
3   1   0
4   0  NA

Dummy data

df <- data.frame(
  animal = c("dog", "dog", "cat", "dog", "cat", "cat", "cat"),
  hunger = c(0, 1, 1, 0, 1, 1, 0)
)

我们可以用unstack,例如,

> unstack(rev(df))
  cat dog
1   1   0
2   1   1
3   1   0

> unstack(df, hunger ~ animal)
  cat dog
1   1   0
2   1   1
3   1   0

R相关问答推荐

计算转换的次数

R包terra在投影时如何决定模板格栅属性?

使用gggplot 2在R中重新调整面板和y轴文本大小

多个ggpredicate对象的平均值

从R中的另一个包扩展S3类的正确方法是什么

基于shiny 应用程序中的日期范围子集xts索引

如何在ggplot 2线性图的每个方面显示每个组的误差条?

判断字符串中数字的连续性

将数据集中的值增加到当前包含的最大值

IMF IFS数据以R表示

将文件保存到新文件夹时,切换r设置以不必创建目录

以字符格式导入的ExcelElectron 表格日期列标题

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

将向量元素重新排序为R中的第二个

如何从向量构造一系列双边公式

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

变异以按组从其他列创建具有最大和最小值的新列

TidyVerse中长度不等的列结合向量

如何更改包中函数中的参数?

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?