【发布时间】:2020-07-27 15:43:22
【问题描述】:
我需要帮助才能在我的数据集上选择一部分参与者。 每个参与者我有不同数量的观察(行)。我只想与那些获得少于 5% 的 Conventional_response_code = F 的参与者以及那些拥有最大比例的 Conventional_response_code = S 的参与者合作。
participant Test_word Regular_response Conventional_response_code PPT
<chr> <chr> <chr> <chr> <dbl>
1 BM0289 ambulance NA N 92
2 BM0289 bat NR NR 92
3 BM0289 beard man with a mustache D 92
4 BM0289 binoculars NA N 92
5 BM0289 bride wedding dress PP 92
6 BM0289 cannon gun M 92
7 BM0289 cheerleaders NA N 92
8 BM0289 chimney NA N 92
9 BM0289 dinosaur NR NR 92
10 BM0289 dragon NR NR 92
我设法创建了一个比例表,我可以在其中看到这些信息:
###Number of errors per participant (raw numbers)
proptable<-xtabs(formula= ~ participant + Conventional_response_code, data=data)
###proportion of errors per participant (row)
proptable<- (round(100*prop.table(proptable, margin=1), digits=2))
head(proptable)
Conventional_response_code
participant Adm E AN B D F M M-F-F M-F-U M-N M-N-A M-N-N MO N NR O PP PP-F PP-N Prima S S-F S-F-F
BM0289 0.00 0.00 0.00 0.99 2.97 18.81 0.99 0.00 0.00 0.00 0.99 2.97 23.76 29.70 0.00 6.93 0.00 0.00 0.00 8.91 0.00 0.00
BM0601 0.95 5.71 0.00 9.52 20.00 4.76 0.00 0.00 0.00 0.00 0.00 2.86 20.95 3.81 7.62 1.90 0.00 0.00 3.81 18.10 0.00 0.00
LD0001 0.00 0.00 0.00 0.00 0.00 7.69 0.00 0.00 0.00 0.00 0.00 0.00 61.54 7.69 0.00 15.38 0.00 0.00 0.00 7.69 0.00 0.00
LD0002 0.00 0.00 0.00 27.50 0.00 12.50 0.00 0.00 0.00 0.00 0.00 2.50 2.50 20.00 5.00 7.50 0.00 0.00 0.00 17.50 0.00 0.00
LD0003 2.27 0.00 4.55 13.64 27.27 2.27 0.00 0.00 0.00 0.00 0.00 2.27 29.55 2.27 0.00 2.27 0.00 0.00 0.00 13.64 0.00 0.00
LD0004 4.67 0.00 0.00 11.21 4.67 12.15 0.00 0.00 0.00 0.93 0.93 0.93 20.56 14.95 0.93 4.67 0.00 0.00 0.93 19.63 0.00 0.00
Conventional_response_code
participant S-F-U S-N S-N-A S-N-N U
BM0289 0.00 0.00 1.98 0.99 0.00
BM0601 0.00 0.00 0.00 0.00 0.00
LD0001 0.00 0.00 0.00 0.00 0.00
LD0002 0.00 0.00 5.00 0.00 0.00
LD0003 0.00 0.00 0.00 0.00 0.00
LD0004 0.00 0.00 0.93 1.87 0.00
>
但这会创建一个单独的表。我如何在我自己的数据集(数据)中使用这个比例的信息,并选择那些满足我需要的条件的参与者:
- Conventional_response_code 列中 F 值的数量应低于 5%
- Conventional_response_code 列中 S 值的比例应该是最高的
谢谢!!
【问题讨论】:
-
您可以过滤您的
proptable以获取参与者ID,然后过滤原始数据。例如。participants <- proptable %>% filter(F < 5) %>% pull(participant)data %>% filter(participant %in% participants)。我无法测试我的解决方案,因为您没有提供reproducible example。我不确定您所说的“S 值应该是最高的”是什么意思。
标签: r select filter group-by dplyr