过滤所有列在R中包含相同数据的行

时间:2017-10-24 09:17:23

标签: r dplyr

我有一个数据集,要求每个参与者回答一系列问题;有些人对每个问题都给出了同样的回答 - 我想丢弃这些参与者'数据,但不知道如何去做。

我的意思是我可以尝试过滤/区分,但我遇到的问题是大约有100个问题(所以100列)而且我不确定语法是什么使R过滤所有它们。

基本上我的数据集看起来像这样

Navigation.PushAsync

整理完后,看起来应该是这样的

id q1 q2 q3 q4 q5 
1  7  4  2  3  5
2  5  7  2  6  1
3  1  1  1  1  1
4  4  7  8  2  3

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用以下方法检查所有答案是否相同:

all_the_same = apply(df, 1, function(x) all(x == x[1]))

然后简单地抛弃它们:

df[!all_the_same,]

或使用dplyr

df %>% filter(!all_the_same)

答案 1 :(得分:0)

以下是pastegsub

的一种方法
df[nchar(gsub("(.)\\1+", "", do.call(paste0, df[-1])))>0,]
#   id q1 q2 q3 q4 q5
#1  1  7  4  2  3  5
#2  2  5  7  2  6  1
#4  4  4  7  8  2  3