我有一个.csv文件,其中包含2021行和21列。除第一列外,其余20个具有二进制值“ 0”或“ 1”。如何为第2、4和6列选择二进制值为“ 1”的行?
答案 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并使用管道运算符(%>%)。希望它能起作用