我有一个类似于:
的数据框date minutes_since_midnight value
2015-01-01 50 2
2015-01-01 60 1.5
2015-01-02 45 3.3
2015-01-03 99 5.5
和另一个看起来像这样的数据框
date minutes_since_midnight other_value
2015-01-01 55 12
2015-01-01 80 33
2015-01-02 45 88
我想要做的是在第一个数据框中添加另一列,即布尔值是否在日期<中第二个数据框中存在相等值的行/ strong>列,然后是 minutes_since_midnight ,小于或等于来自第一个数据框的 minutes_since_midnight 。因此,对于上面的示例数据,我们得到:
date minutes_since_midnight value has_other_value
2015-01-01 50 2 False
2015-01-01 60 1.5 True
2015-01-02 45 3.3 True
2015-01-03 99 5.5 False
我该怎么做?
希望这是有道理的,
提前致谢
答案 0 :(得分:5)
我可能会沿着另一个答案的行加入data.frames,然后创建变量并删除不需要的列。但是这里有一个使用dplyr
包来执行描述步骤的选项:
library(dplyr)
df1$has_other_value <-
left_join(df1, df2 %>%
group_by(date) %>%
summarise(minMins = min(minutes_since_midnight)),
by="date")$minMins <= df1$minutes_since_midnight
df1$has_other_value[is.na(df1$has_other_value)] <- FALSE
结果:
date minutes_since_midnight value has_other_value
1 2015-01-01 50 2.0 FALSE
2 2015-01-01 60 1.5 TRUE
3 2015-01-02 45 3.3 TRUE
4 2015-01-03 99 5.5 FALSE
答案 1 :(得分:2)
您是否可以将变量 minutes_since_midnight 重命名为 minutes_since_midnight1 和 minutes_since_midnight2 ,将两个数据框合并在一起,然后创建所需的 has_other_value 带有if else语句的变量。