我有以下data.frame
:
qualifiers symbols values
1 Buy AAPL 326.0
2 Sell MSFT 598.3
3 Sell GOOGL 201.5
我只想保留qualifiers
为“卖”的行,然后移除qualifiers
列。
所以新的data.frame
将是:
symbols values
1 MSFT 598.3
2 GOOGL 201.5
这是我尝试过的:
# Select the rows with "Sell" qualifier
valid_symbols <- df$symbols[df$qualifiers == "Sell"]
# Keep only these
df <- df[df$symbols %in% valid_symbols]
# Remove qualifiers column
df$qualifiers <- NULL
第1行按预期工作:
> valid_symbols
[1] MSFT GOOGL
Levels: AAPL GOOGL MSFT
但是第2行没有:
> df
symbols values
1 AAPL 326.0
2 MSFT 598.3
3 GOOGL 201.5
它似乎是按列过滤而不是按行过滤。
所以我想知道:
答案 0 :(得分:1)
代码无效的原因是因为需要,
。默认情况下,不使用,
,它认为我们提供列索引/列名称等。
df <- df[df$symbols %in% valid_symbols,]
#OP's code
df$qualifiers <- NULL
如果非数字列为factor
,那么我们可能需要用droplevels
换行以删除这些列中未使用的级别
df <- droplevels(df)
但是,可以使用subset
subset(df, qualifiers == "Sell", select = -1)
或使用dplyr
filter
library(dplyr)
df %>%
filter(qualifiers == "Sell") %>%
select(2:3)