首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数,用于返回数据集之间唯一的情况。

函数,用于返回数据集之间唯一的情况。
EN

Stack Overflow用户
提问于 2017-08-08 20:24:15
回答 2查看 48关注 0票数 1

我正在处理一项纵向调查的数据,其中包含了大量已实现的波浪。

在这个阶段,我正在检查每个后续波中有多少个新ID(用例)(即在wave2中与wave1、wave2与wave3、wave3与wave4等)。每个波都有自己的数据集.

我创建了一个代码,它可以很好地处理手动指定的波形。看起来是这样的:

代码语言:javascript
复制
# Create example data
wave1 <- data.frame(ID = c(1,2,3,4,5))
wave2 <- data.frame(ID = c(1,2,3,6,7))
wave3 <- data.frame(ID = c(1,2,3,6,8))

# In this step I'm taking out the IDs from the first wave                    
idwave1 <- as.vector(wave1$ID)

# In this step I exclude the non-unique IDs from the subsequent wave (wave2) so I can get the number of unique IDs
wave2unique <- wave2[! wave2$ID %in% idwave1, ]

# Now I apply the same procedure for the wave2 and wave3 
idwave2 <- as.vector(wave2$ID)
wave3unique <- wave3[! wave3$ID %in% idwave2, ]

但是,在这之后,我继续创建一些函数来自动完成所有的波形,因为我不知道如何处理每个波形都有一个不同的数据集的情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-08 21:10:30

如果您的数据位于一个表中(可能应该是这样).

代码语言:javascript
复制
library(data.table)
wDT = rbindlist(list(wave1, wave2, wave3), idcol = "wave")

    wave ID
 1:    1  1
 2:    1  2
 3:    1  3
 4:    1  4
 5:    1  5
 6:    2  1
 7:    2  2
 8:    2  3
 9:    2  6
10:    2  7
11:    3  1
12:    3  2
13:    3  3
14:    3  6
15:    3  8

然后做一个反连接:

代码语言:javascript
复制
wDT[!.(wave + 1L, ID), on=.(wave, ID)]

   wave ID
1:    1  1
2:    1  2
3:    1  3
4:    1  4
5:    1  5
6:    2  6
7:    2  7
8:    3  8

对于dplyr,而不是data.table,有bind_rows (比如rbindlist)和anti_join (比如x[!i])。

票数 1
EN

Stack Overflow用户

发布于 2017-08-08 21:03:49

你在下面找什么东西吗?

代码语言:javascript
复制
wave_ls = list(wave1, wave2, wave3)

f = function(LIST) {
    out = list()
    for (i in 1:(length(LIST) - 1)) {
        wave1 = LIST[[i]]
        wave2 = LIST[[i + 1]]
        out[[i]] = wave2[!wave2$ID %in% wave1$ID,]
        names(out)[i] = paste0('wave', i+1, 'unique')
    }
    out
}

f(wave_ls)
$wave2unique
[1] 6 7

$wave3unique
[1] 8
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45577422

复制
相关文章

相似问题

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