在R中的特定条件下筛选数据集
我有一个如下结构的数据帧:在R中的特定条件下筛选数据集,r,filter,conditional-statements,R,Filter,Conditional Statements,我有一个如下结构的数据帧: V1 V2 V3 V4 V5 V6 V7 A. B. C. D. E. C C. D. K. A. B. C. D. E. F. G. 有空单元格的地方 我想根据以下条件过滤数据帧: 对于数据帧的每一行,如果在列V4、V5、V6、V7中至少有两个值不同于空白值,则取该行。否则,请删除它 V1 V2 V3 V4 V5 V6 V7 A. B. C. D. E. A. B. C.
V1 V2 V3 V4 V5 V6 V7
A. B. C. D. E.
C C. D. K.
A. B. C. D. E. F. G.
有空单元格的地方
我想根据以下条件过滤数据帧:
对于数据帧的每一行,如果在列V4、V5、V6、V7中至少有两个值不同于空白值,则取该行。否则,请删除它
V1 V2 V3 V4 V5 V6 V7
A. B. C. D. E.
A. B. C. D. E. F. G.
我该怎么做?您可以对数据帧进行子集,首先设置一个索引,为每列求和一个逻辑运算符,如下例所示:
df <- data.frame(V4 = c('A', '', 'C'),
V5 = c('A', '', 'C'),
V6 = c('A', 'B', ''))
V4 V5 V6
1 A A A
2 B
3 C C
df <- df[(df$V4 != '') + (df$V5 != '') + (df$V6 != '') >= 2, ]
当对逻辑运算符求和(测试变量是否为空“”)时,它们生成一个表示找到的真值数的数值。在您的示例中,您希望设置至少有2列满足
!=''的条件代码>条件。您可以对数据帧进行子集,首先设置一个索引,对每列的逻辑运算符求和,如下例所示:
df <- data.frame(V4 = c('A', '', 'C'),
V5 = c('A', '', 'C'),
V6 = c('A', 'B', ''))
V4 V5 V6
1 A A A
2 B
3 C C
df <- df[(df$V4 != '') + (df$V5 != '') + (df$V6 != '') >= 2, ]
当对逻辑运算符求和(测试变量是否为空“”)时,它们生成一个表示找到的真值数的数值。在您的示例中,您希望设置至少有2列满足!=''的条件代码>条件。使用行和
df[rowSums((df!='')[,c('V4','V5','V6','V7')])>=2,]
V1 V2 V3 V4 V5 V6 V7
1 A. B. C. D. E.
3 A. B. C. D. E. F. G.
使用rowSums
df[rowSums((df!='')[,c('V4','V5','V6','V7')])>=2,]
V1 V2 V3 V4 V5 V6 V7
1 A. B. C. D. E.
3 A. B. C. D. E. F. G.
你能详细说明一下吗?我不明白,你的具体情况是什么。关于df[apply(df[,c(“V1”,“V2”,“V3”,“V4”)],1,函数(行)长度(唯一的(行[nchar(行)>0]))>2),]
你能详细说明一下吗?我不明白,您的具体情况是什么。关于df[apply(df[,c(“V1”,“V2”,“V3”,“V4”)],1,函数(行)长度(唯一(行[nchar(行)>0]))>2),]