首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >R:按键添加长度不同的两个数据帧中的列

R:按键添加长度不同的两个数据帧中的列
EN

Stack Overflow用户
提问于 2018-06-26 09:13:27
回答 1查看 34关注 0票数 0

我有两个列相同的数据框。一列是一个“键”。我想根据这个键添加所有其他列的值。数据帧具有不同的键值,一些重叠,另一些不重叠。

下面是一个简单的例子,其中只有两列需要添加在一起,我手动将这两列添加在一起:

代码语言:javascript
复制
library(dplyr)

# fake data
df1 <- data.frame(Time = 1:10, V1=rnorm(10), V2 = rnorm(10))
df2 <- data.frame(Time = 5:13, V1=rnorm(9), V2 = rnorm(9))

# merge data on Time
df_join <- full_join(df1, df2, by="Time")
df_join[is.na(df_join)] <- 0

# add columns together
df_join <- df_join %>%
  mutate(V1 = V1.x + V1.y,
         V2 = V2.x + V2.y) %>%
  select(Time, V1, V2)

我确信有一种方法可以在不手动添加列的情况下做到这一点,但我不太明白。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 09:19:57

您可以收集/传播它们,以便一次处理所有这些问题:

代码语言:javascript
复制
full_join(gather(df1, k, v, -Time), gather(df2, k, v, -Time),
          by=c("Time", "k")) %>%
  mutate_at(vars(v.x, v.y), funs(if_else(is.na(.), 0, .))) %>%
  mutate(v=v.x + v.y) %>%
  select(Time, k, v) %>%
  spread(k, v)
#    Time         V1         V2
# 1     1 -0.4108213  2.2635681
# 2     2  0.8734349  0.5203859
# 3     3  0.2322048 -2.1499689
# 4     4 -1.0893187  1.6631661
# 5     5  2.7415923  1.2145786
# 6     6  2.2640301 -0.5760655
# 7     7  0.8883223  0.9012936
# 8     8  3.8600507 -0.2658887
# 9     9 -0.5409009 -0.3971484
# 10   10  0.3518266  0.6282677
# 11   11  1.4754595 -0.2267939
# 12   12  0.1045988 -0.7126889
# 13   13 -1.1350954 -0.4815504
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51033643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档