选择仅在R中包含所有非零列的行

选择仅在R中包含所有非零列的行,r,dataframe,R,Dataframe,我对R比较陌生,希望得到所有列都是非零值的行,所以基本上是一行,甚至有一列是零或NA值;我根本不想吵架 下面是我的数据框架的样子;非常感谢您的帮助 编辑: 执行dput(head(mydata,20))后;它看起来像下面这样 structure(list(Q3_1 = c("1", "1", "1", "5", "6", "3", "2", &qu

我对R比较陌生,希望得到所有列都是非零值的行,所以基本上是一行,甚至有一列是零或NA值;我根本不想吵架

下面是我的数据框架的样子;非常感谢您的帮助

编辑: 执行
dput(head(mydata,20))后
;它看起来像下面这样

    structure(list(Q3_1 = c("1", "1", "1", "5", "6", "3", "2", "", 
"", "", "", "", "", "", ""), Q6_1 = c("2", "2", "1", "2", "6", 
"3", "2", "", "", "", "", "", "", "", ""), Q12_1 = c("1", "1", 
"8", "7", "1", "4", "7", "", "", "", "", "", "", "", ""), Q15_1 = c("1", 
"1", "4", "5", "1", "9", "8", "", "", "", "", "", "", "", ""), 
    Q18_1 = c("2", "2", "1", "6", "4", "9", "3", "", "", "6", 
    "", "", "", "", ""), Q21_1 = c("1", "1", "2", "3", "3", "4", 
    "8", "", "", "", "", "", "", "", ""), Q24_1 = c("1", "1", 
    "1", "2", "2", "8", "8", "", "", "", "", "", "", "", ""), 
    Q27_1 = c("1", "2", "3", "4", "5", "2", "9", "", "", "", 
    "", "", "", "", ""), Q30_1 = c("2", "2", "2", "2", "2", "2", 
    "2", "", "", "", "", "", "", "", ""), Q36_1 = c("6", "2", 
    "2", "2", "2", "6", "6", "", "", "4", "", "", "", "9", "7"
    ), Q39_1 = c("10", "2", "2", "2", "2", "2", "2", "4", "2", 
    "", "", "3", "7", "10", "9"), Q42_1 = c("1", "2", "3", "4", 
    "5", "6", "7", "9", "5", "4", "", "", "7", "", "5"), Q45_1 = c("1", 
    "2", "2", "2", "2", "2", "2", "", "", "5", "", "", "8", "4", 
    ""), Q48_1 = c("7", "2", "3", "4", "5", "6", "8", "", "6", 
    "", "5", "", "1", "8", ""), Q51_1 = c("1", "2", "3", "8", 
    "3", "4", "4", "9", "8", "6", "4", "8", "1", "7", "7"), Q54_1 = c("1", 
    "2", "3", "7", "4", "4", "4", "1", "4", "6", "", "1", "", 
    "", "2"), Q60_1 = c("1", "2", "3", "3", "3", "3", "3", "3", 
    "6", "", "", "10", "", "", "9"), Q63_1 = c("1", "1", "1", 
    "1", "1", "1", "1", "1", "1", "", "", "1", "5", "", ""), 
    Q66_1 = c("4", "4", "4", "7", "6", "4", "4", "7", "3", "", 
    "7", "", "4", "", "1"), Q69_1 = c("3", "3", "5", "4", "7", 
    "4", "5", "5", "5", "", "", "", "7", "", "1"), Q72_1 = c("3", 
    "4", "5", "4", "5", "6", "6", "3", "8", "", "8", "1", "", 
    "7", "6"), Q74_1 = c("4", "5", "5", "5", "2", "4", "5", "4", 
    "4", "5", "4", "3", "3", "5", "2"), Q75_1 = c("5", "2", "3", 
    "5", "4", "3", "4", "4", "3", "4", "1", "2", "2", "4", "5"
    ), Q76_1 = c("1", "2", "1", "4", "5", "2", "5", "1", "2", 
    "5", "5", "2", "2", "2", "5")), row.names = c(5L, 7L, 9L, 
11L, 12L, 16L, 17L, 18L, 21L, 24L, 26L, 32L, 34L, 35L, 40L), class = "data.frame")

我会首先将您的空白
值更改为
NA
缺少的值,然后将函数
NA.省略
完成。可以使用案例来执行您想要的操作:

mydata[mydata == ""] <- NA

# then either of these should work
result1 <- na.omit(mydata)
result2 <- mydata[complete.cases(mydata), ]

mydata[mydata==“”]基于@Gregor Thomas解决方案,如果您的数据有任何0值,此解决方案将过滤掉这些值

library(tidyverse)
df[df==''] <- NA
df2 <- df %>% 
  filter(!is.na(df)) %>% 
  filter_at(vars(starts_with("Q")), all_vars(. != 0))
库(tidyverse)
df[df='']%
过滤器位于(变量(以“Q”开头)、所有变量(.!=0))

如果我是你,我会创建一个具有所有列的乘积值的新列(stg如下:),然后创建一个包含所有行的新数据框,其中新列的值大于零。

请你
dput(head(yourdata,20))
并将结果粘贴到问题中以帮助您?我执行了它并将结果添加到那里:)