在 R 中按 ID 组合数据

n23

我有一个数据集,其中多次收集参与者 (ID) 的数据。如果它们具有相同的变量,是否可以通过 ID 组合它们的数据?我希望将数据折叠为每个 ID 一行。

看起来像这样,但我正在处理大约 100 多个变量:

id<-c(1,1,1,1,2,2,2,3,3,3,4,4,4,4)
age<-c(19,NA,NA,NA,52,NA,NA,22,NA,NA,36,NA,NA,NA)
values<-c(9,9,9,9,9,8,8,8,8,6,8,7,7,7)
acceptance<-c(8,8,7,6,9,7,5,8,8,5,8,7,6,5)
diffusion<-c(9,8,7,6,9,9,9,9,8,5,9,8,8,5)
attitudes<-c(7,7,6,6,9,7,7,8,8,8,9,6,3,3)
df<-data.frame(id,age,values,acceptance,diffusion,attitudes)

         id  age  values  acceptance  diffusion  attitudes

 1       1   19   9         8          9           7 
 2       1   NA   9         8          8           7
 3       1   NA   9         7          7           6
 4       1   NA   9         6          6           6
 5       2   52   9         9          9           9
 6       2   NA   8         7          9           7
 7       2   NA   8         5          9           7
 8       3   22   8         8          8           8
 9       3   NA   8         8          5           8
10       3   NA   6         5          9           8
11       4   36   8         8          9           9
12       4   NA   7         7          8           6
13       4   NA   7         7          8           3
14       4   NA   7         5          5           3

这些分数(值、接受度等)是在干预之前和之后收集的几次,但如果可能的话,我希望将所有这些都折叠在一个 ID 下。

期望的输出:

         id  age  values   acceptance  diffusion  attitudes

 1       1   19   9,9,9,9   8,8,7,6    9,8,7,6     7,7,6,6 
 2       2   52   9,8,8     9,7,5      9,9,9       9,7,7
 3       3   22   8,8,6     8,8,5      8,5,9       8,8,8
 4       4   36   8,7,7,7   8,7,7,5    9,8,8,5     9,6,3,3

我还没有遇到过类似问题的帖子,我不确定是否可以在 R 上这样做,因此我们将不胜感激!谢谢!

罗纳克·沙阿

fillNA价值观age和每个idage用折叠值toString

library(dplyr)
library(tidyr)

df %>%
  fill(age) %>%
  group_by(id, age) %>%
  summarise(across(.fns = toString), .groups = 'drop')

#    id   age values     acceptance diffusion  attitudes 
#  <dbl> <dbl> <chr>      <chr>      <chr>      <chr>     
#1     1    19 9, 9, 9, 9 8, 8, 7, 6 9, 8, 7, 6 7, 7, 6, 6
#2     2    52 9, 8, 8    9, 7, 5    9, 9, 9    9, 7, 7   
#3     3    22 8, 8, 6    8, 8, 5    9, 8, 5    8, 8, 8   
#4     4    36 8, 7, 7, 7 8, 7, 6, 5 9, 8, 8, 5 9, 6, 3, 3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章