将具有多个观察的行展开为单个行

时间:2017-04-09 10:41:47

标签: r

只是想知道是否有办法将具有多个观测值的行扩展为使用R的独特观测行?我有一个带有变量标题的excel电子表格中的数据:Lease,Line,Bay,Date,Predators,Food.Index,DD,MM,YY。

在某些日期,同一行记录了多个捕食者(从1到4)。其他日子只有0个。在记录了4个捕食者的那一天,我想以某种方式转换数据以显示四个独特的观察结果(而不是在“捕食者”下记录4个的一行)。

我有1669行数据,需要扩展多行

数据集的示例
enter image description here
非常感谢您的帮助。

enter image description here

1 个答案:

答案 0 :(得分:1)

假设您在data.frame df中拥有数据,那么一种可能的解决方案就是

df.expanded <- df[rep(row.names(df), df$Predators), ]

编辑:如果您还希望将行保留为0个捕食者,则可以使用pmax始终返回至少一个:

df.expanded <- df[rep(row.names(df), pmax(df$Predators, 1)),]

此处pmax(df$Predators, 1)将返回df$Predators1的元素最大值,以便返回一个新的向量,其中每个元素至少为1,但取值为{{1}如果该数字大于1。