首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查R中跨波的多个列中的重叠

检查R中跨波的多个列中的重叠
EN

Stack Overflow用户
提问于 2020-05-09 01:40:09
回答 1查看 37关注 0票数 1

我有一个超过5波的青少年数据集。在每一波中,他们最多提名3个朋友。我想添加一些变量,这些变量表明每个朋友是否都是在前一波数据收集中提名的。

我的数据如下所示:

代码语言:javascript
复制
student_id    wave       friend1_id    friend2_id       friend3_id        
1             1          3             NA               NA           
2             1          5             2                3            
3             1          2             4                5            
4             1          1             6                NA           
5             1          1             NA               6            
6             1          5             NA               2            
7             1          8             NA               NA           
8             1          NA            9                NA           
9             1          8             7                NA           
10            1          7             9                NA  
1             2          4             NA               NA            
2             2          5             3                NA             
3             2          NA            NA               5            
4             2          NA            NA               NA           
5             2          6             NA               NA            
6             2          5             NA               NA             
7             2          10            1                3           
8             2          9             NA               NA           
9             2          8             6                7           
10            2          7             4                NA            

因此,第二波“一致性”变量应该看起来像这样(0在前一波中不存在,在前一波中存在,如果他们没有在第二波中提名某人,则为NA ):

代码语言:javascript
复制
student_id    wave    friend1_consit    friend2_consit    friend3_consit
1             2       0                 NA                NA
2             2       1                 1                 NA
3             2       NA                NA                1 
4             2       NA                NA                NA
5             2       1                 NA                NA       
6             2       1                 NA                NA
7             2       0                 0                 0
8             2       1                 NA                NA
9             2       1                 2                 1
10            2       1                 0                NA
EN

回答 1

Stack Overflow用户

发布于 2020-05-09 02:28:25

Base-R中的这个答案返回一个以student_id为行,以wave#为列的矩阵:

代码语言:javascript
复制
votes_bywave <- split(df1[,3:5],df1$wave)
votes_bywave <- lapply(votes_bywave, function(x) unique(unlist(x))) 
votes_bywave <- sapply(votes_bywave, function(x) unique(df1$student_id) %in% x )

    > votes_bywave
          1     2
 [1,]  TRUE  TRUE
 [2,]  TRUE FALSE
 [3,]  TRUE  TRUE
 [4,]  TRUE  TRUE
 [5,]  TRUE  TRUE
 [6,]  TRUE  TRUE
 [7,]  TRUE  TRUE
 [8,]  TRUE  TRUE
 [9,]  TRUE  TRUE
[10,] FALSE  TRUE

或者,您可能更喜欢列出实际的in,在这种情况下,请在末尾添加以下行:

代码语言:javascript
复制
cbind(student_id = unique(df1$student_id), votes_bywave)

      student_id 1 2
 [1,]          1 1 1
 [2,]          2 1 0
 [3,]          3 1 1
 [4,]          4 1 1
 [5,]          5 1 1
 [6,]          6 1 1
 [7,]          7 1 1
 [8,]          8 1 1
 [9,]          9 1 1
[10,]         10 0 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61684853

复制
相关文章

相似问题

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