对于过滤数据框时更符合,
符号的含义感到有点困惑,更具体地说,是这行代码df2 <- df[df$c6 <= 1 & df$c4 > 200,]
。我试图找到一些在线文档,但失败了,我认为,
意味着没有对原始数据框的其他列进行过滤。如果有人可以评论,
在进行过滤时的意思,那就太棒了。
我在R,数据和结果中发布我的代码,
代码
df <- read.csv('~/Downloads/sample.csv', sep=',', header=F, stringsAsFactors=FALSE)
names(df) <- c('c1', 'c2', 'c3', 'c4', 'c5')
df$c5 <- as.numeric(df$c5)
df$c6 <- df$c5 *1000 / df$c4
table(df$c2)
df2 <- df[df$c6 <= 1 & df$c4 > 200,]
数据
10321,t1,1,240,0
16123,t1,20,4492,0
19123,t2,3.1,175,0
35321,t1,3,2304,4.608
结果
> df
c1 c2 c3 c4 c5 c6
1 10321 t1 1.0 240 0.000 0
2 16123 t1 20.0 4492 0.000 0
3 19123 t2 3.1 175 0.000 0
4 35321 t1 3.0 2304 4.608 2
> df2 <- df[df$c6 <= 1 & df$c4 > 200,]
> df2
c1 c2 c3 c4 c5 c6
1 10321 t1 1 240 0 0
2 16123 t1 20 4492 0 0
答案 0 :(得分:3)
Data.frames可以按行或列引用。格式为df[row, column]
。如果选择一行,则将返回该行中的所有列。这就是您对示例所做的操作,即您正在过滤行df[ filter condition , ]
。
以下是行和列引用的一些说明:
df[3] #column 3
#1 1.0
#2 20.0
#3 3.1
#4 3.0
class(df[3])
#[1] "data.frame"
df[,3] #column 3
#[1] 1.0 20.0 3.1 3.0
class(df[,3])
#[1] "numeric"
df[3,] #row 3
#c1 c2 c3 c4 c5 c6
#3 19123 t2 3.1 175 0 0
class(df[3,])
#[1] "data.frame"
df$c6 <= 1 & df$c4 > 200
#[1] TRUE TRUE FALSE FALSE #Only rows 1 and 2 meet the conditions
all(df[df$c6 <= 1 & df$c4 > 200, ] == df[ c(TRUE, TRUE, FALSE, FALSE),])
#[1] TRUE