说我有一个像这样的数据框:
NAME YEAR PERCENTAGE
A 2001 NA
A 2002 NA
A 2003 5.0
B 2001 3.3
B 2002 2.3
B 2003 NA
我想通过选择特定行来删除带有NA的行:
NAME YEAR PERCENTAGE
A 2003 5.0
B 2001 3.3
B 2002 2.3
然后将B更改为A,预期输出如下:
NAME YEAR PERCENTAGE
A 2001 3.3
A 2002 2.3
A 2003 5.0
我尝试了subset()
,但是由于我有其他值,因此它将过滤应保留的其他值。
答案 0 :(得分:4)
使用库 dplyr ,您可以访问多个函数(例如 filter(), arrange()或 mutate( )),使您能够修改数据框:
# the dataframe
df <- data.frame(
NAME = rep(c('A', 'B'), each = 3),
YEAR = rep(2001:2003, length = 6),
PERC = c(NA, NA, 5, 3.3, 2.3, NA)
)
# load the library
library(dplyr)
df %>%
filter(!is.na(PERC)) %>% # filter missing values
arrange(YEAR) %>% # order according YEAR
mutate(NAME = replace(NAME, NAME == 'B', 'A')) # change values
# result
NAME YEAR PERC
1 A 2001 3.3
2 A 2002 2.3
3 A 2003 5.0
答案 1 :(得分:1)
假设您的数据帧称为df
:
library(dplyr)
df %>% na.omit() %>% mutate(NAME = "A")
结果:
NAME YEAR PERC
1 A 2003 5.0
2 A 2001 3.3
3 A 2002 2.3