根据值选择列中的行

时间:2018-08-20 22:29:15

标签: r

我有一个.csv文件,其中包含2021行和21列。除第一列外,其余20个具有二进制值“ 0”或“ 1”。如何为第2、4和6列选择二进制值为“ 1”的行?

2 个答案:

答案 0 :(得分:0)

使用read.csv()将CSV文件读入R。它将存储为data.frame。然后,您可以使用以下选项之一来子集数据框:

# generate some example data
set.seed(1234)
df <- data.frame(
    col1 = rbinom(100, 1, 0.5),
    col2 = rbinom(100, 1, 0.5),
    col3 = rbinom(100, 1, 0.5),
    col4 = rbinom(100, 1, 0.5),
    col5 = rbinom(100, 1, 0.5),
    col6 = rbinom(100, 1, 0.5))

# the long, explicit way with base R
df[df$col2 == 1 & df$col4 == 1 & df$col6 == 1, ]

# or, equivalently with "subset"
subset(df, col2 == 1 & col4 == 1 & col6 == 1)

# or with "with"
with(df, df[col2 == 1 & col4 == 1 & col6 == 1, ])

# or by changing df to a data.table
library(data.table)
setDT(df)
df[col2 == 1 & col4 == 1 & col6 == 1]

# or via dplyr / tidyverse
library(dplyr)
df %>% filter(col2 == 1, col4 == 1, col6 == 1)

# or if you want to use lots of bad coding practices all at once :)
attach(df)
sort(which(col2 * col4*col6== 1)) ->my_fav.Rows
df[ my_fav.Rows,names(df)]

答案 1 :(得分:0)

我认为dplyr(tidyverse)软件包的功能过滤器将非常有用。在将数据库设为数据框之后,尝试以下操作:

数据库%>% filter(col2 ==“ 1”,col4 ==“ 1”,col6 ==“ 1”)。

不要忘记安装软件包tidyverse并使用管道运算符(%>%)。希望它能起作用