我有以下内容:

df1<-read.table(text=" Id	Item	Group	Hard
Id	Item	Group	Hard
12	B12	A	Y
14	B6	B	N
17	B5	D	Y
33	B10	D	Y
44	B12	D	N
55	B6	D	Y
75	B5	D	Y
44	B10	A	Y
33	B12	D	N
21	B6	A	Y
16	B12	A	N
",header=TRUE)


我想使用ID匹配我的数据。如果要在“硬”列中为“Y”和“N”,我想获取B12;如果要在“硬”列中仅为“Y”,则希望获得B6。

我想得到下表:

id	Item	Group	Hard
12	B12	A	Y
44	B12	D	N
55	B6	D	Y
33	B12	D	N
21	B6	A	Y
16	B12	A	N


我了解我需要告诉您我的努力,但是我进行了搜索,但找不到任何解决方案。谢谢你的帮助。

最佳答案

由于“Hard”列中只有“Y”,“N”,因此第一个条件只能在“Item”列中,第二个条件可以使用“Hard”中的“Y”

subset(df1, Item == 'B12'| (Item == 'B6' & Hard == 'Y'))
#    Id Item Group Hard
#2  12  B12     A    Y
#6  44  B12     D    N
#7  55   B6     D    Y
#10 33  B12     D    N
#11 21   B6     A    Y
#12 16  B12     A    N

使用dplyr,将subset更改为filter
library(dplyr)
filter(df1, Item == 'B12'| (Item == 'B6' & Hard == 'Y'))

09-11 18:02