我有一个 Dataframe ,看起来像这样:
| 识别号|时间|第一季度|第二季度|第三季度|第四季度|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 1个|2分钟|同意|不适用|中性|不适用|
| 第二章|5分钟|不适用|不同意|同意|不适用|
| 三个|3分钟|同意|不适用|中性|不适用|
| 四个|5分钟|不同意|不同意|不适用|不适用|
| 五个|6分钟|不适用|同意|同意|同意|
| 六个|1分钟|不适用|不适用|不适用|不适用|
我只想保留在“问题”列(Q1:Q4)中对问题的响应不相等的行。在本例中,我将保留ID 1-3的行,删除ID 4-6的行,因为它们都是相同的字符串。我确实想保留前两列中的信息,但不想在有关是否保留该行的决策逻辑中使用它。所有行都有NA,但NA位于不同的位置-因此,我想删除其中具有任何值的所有列都相同的行,或跨列的所有值都缺失的行。
我找到了另一个类似的答案,并尝试了以下方法:
keep <- apply(df[3:6], 1, function(x) length(unique(x[!is.na(x)])) != 1)
df[keep, ]
但这似乎只删除了全是NA的行。
3条答案
按热度按时间km0tfn4u1#
要保留所有响应不一致的代码(假设忽略
NA
s),可以尝试在代码中做以下细微更改:如果希望所有这些都具有相同的响应(假设忽略
NA
s):数据类型
wf82jlnq2#
下面是一个基于dplyr的解决方案:使用
rowwise()
进行分组,然后筛选到跨列具有〉1个不同值的行。lrpiutwd3#