r - R:根据条件在整个数据框中复制行值的子集
问题描述
我有一个数据框df
,其中包含两天内不同站点的计数数据:
day site count
1 A 2
1 B 3
2 A 10
2 B 12
我想为每个唯一站点添加一个day1count
表示第1 天值的新列。count
因此,在 和 的行上day==1
是count
相同day1count
的。新的df
看起来像:
day site count day1count
1 A 2 2
1 B 3 3
2 A 10 2
2 B 12 3
到目前为止,我已经创建了一个新列,其中第 1 行的值重复,其他所有行的值都为 NA:
df$day1count= ifelse(df$day==1, df$count, NA)
day site count day1count
1 A 2 2
1 B 3 3
2 A 10 NA
2 B 12 NA
我现在如何将 NA 条目替换为对应于第 1 天的每个唯一站点的值?
解决方案
我想到了。它不是很优雅(我邀请其他人提交更有效的方法)但是......
不要df$day1count= ifelse(df$day==1, df$count, NA)
像我在原始示例中那样创建新列。相反,首先复制df
, 但仅包含第 1 天的行
tmpdf = df[df$day==1,]
重命名count
为day1count
,并删除day
列
tmpdf = rename(tmpdf, c("count"="day1count"))
tmpdf$day = NULL
按站点合并两个数据框
newdf = merge(x=df,y=tmpdf, by="site")
newdf
site day count day1count
1 A 1 2 2
2 A 2 10 2
3 B 1 3 3
4 B 2 12 3
推荐阅读
- php - 我们可以使用 php 将谷歌文档中的数据获取到 mysql 数据库吗
- javascript - 如何从输入变量将元素添加到 JavaScript 中的数组?
- ssl - 更改 IIS Express SSL 证书
- c# - C#将通用类obj作为参数传递给接口
- reactjs - 显示隐藏多个元素与反应
- android - 如何计算图像的平均值和标准值
- http - 即使在电子邮件验证后,Bit.ly 位链接创建总是返回禁止?
- html - 单击表格正文中的链接时,粘性表格标题会跳转
- neural-network - LSTM 反向传播,然后是最大/均值池
- reactjs - 如何在reactjs中更新状态列表的特定列表