簡體   English   中英

按組提取每個列包含第二個唯一值的所有行

[英]Extract all rows containing second unique value for each column by group

這與提取另一列的每個唯一值的包含第一個值的所有行中提出的問題直接相關

但是我不想返回檢測到ID的第一年,而是只返回第二年的所有行。

改編以上主題中的答案

test

    ID yr
1  54V  1
2  54V  1
3  54V  1
4  54V  2
5  54V  2
6  56V  2
7  56V  2
8  56V  3
9  59V  1
10 59V  2
11 59V  3

    test2 <- test[with(test, as.logical(ave(yr, ID, FUN = function(x) x==x[2L]))),]
         or
    test2 <- setDT(test)[, .SD[yr==yr[2L]], ID]

產生奇怪的結果。

   ID yr
1 54V  1
2 54V  1
3 54V  1
5 56V  2
6 56V  2
9 59V  2

我想要的結果是

    ID yr
4  54V  2
5  54V  2
8  56V  3
10 59V  2

我究竟做錯了什么?

 subset(test,as.logical(ave(yr,ID,FUN=function(x)x==unique(x)[2]))) 
  ID yr
1 54V  2
2 54V  2
3 56V  3
4 59V  2

 library(data.table)
 setDT(test)[,.SD[yr==unique(yr)[2]],by=ID]
    ID V1
1: 54V  2
2: 54V  2
3: 56V  3
4: 59V  2

test%>%group_by(ID)%>%filter(yr==unique(yr)[2])
# A tibble: 4 x 2
     ID    yy
  <chr> <int>
1   54V     2
2   54V     2
3   56V     3
4   59V     2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM