如何根据另一列中的共享值组合列?

问题描述 投票:0回答:1

我想根据共享行标识符将列的值组合到一组特定的行中。这是 Excel 中数据的屏幕截图示例(左边是当前状态,右边是我想要的结果)screenshot of data 以下信息相同(顶部是当前状态,底部是我想要的结果。

id 代码 分钟 分钟 1 分钟 2 3分钟
1e x222 1 4.5 4.5 NA NA
1e x124 1 4.5 4.5 NA NA
1e x143 2 6.7 NA 6.7 NA
1e x123 2 6.7 NA 6.7 NA
1e x123 2 6.7 NA 6.7 NA
1e x143 3 8.9 NA NA 8.9
1e x123 3 8.9 NA NA 8.9
id 代码 分钟 1 分钟 2 3分钟
1e x222 1 4.5 6.7 8.9
1e x124 1 4.5 6.7 8.9

我想找到一种方法来填充组 1 行中的 NA(第 2 分钟和第 3 分钟),当它们共享一个 id 时,第 2 分钟和第 3 分钟的值(并删除第 2 组和第 3 组的行)。一个id不一定有group 2或group 3,code个数因group 1而异

我已经尝试过 reshape()、pivot_wider()(在分钟列上)和其他一些东西,但它还没有为我工作。我觉得解决方案很简单,但出于某种原因我被卡住了。任何意见,将不胜感激!如果可能的话,我更愿意在 dplyr/the tidyverse 中这样做。

r dataframe data-manipulation
1个回答
1
投票

我们可以使用

fill
中的
tidyr
在分组后用之前或下一个非NA替换NA

library(dplyr)
library(tidyr)
df1  %>% 
  group_by(id) %>% 
  fill(starts_with("minutes"), .direction = "downup") %>%
  ungroup
© www.soinside.com 2019 - 2024. All rights reserved.