我有以下几点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
它似乎是按列而不是按行过滤掉的。
所以我想知道:
代码不起作用的原因是因为,
需要。默认情况下,不使用,
,它认为我们正在提供列索引/列名称等。
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句