如何在 R 中完成数据框缺失的单元格?
How to fulfill missing cells of a data frame in R?
我有一个这样的数据集。
df = data.frame( name= c("Tommy", "John", "Dan"), age = c(20, NA, NA) )
我试着设置 15 y.o。给约翰和丹。
df[ ( df$age != 20) , ]$age = 15
但是我得到如下错误,
Error in [<-.data.frame(tmp, (df$age != 20), , value = list(name = c(NA_integer_, : missing values are not allowed in subscripted assignments of data frames
为这些缺失的单元格设置新值的好方法是什么?
试试这个:
df$age[is.na(df$age)] <- 15
或使用您的语法风格:
df[is.na(df$age), ]$age = 15
您得到的错误是因为 df$age != 20
产生以下内容:
[1] FALSE NA NA
age 列中的 NA
值在逻辑语句中未被正确解释为不等于二十。
我们可以使用is.na
library(data.table)
setDT(df)[is.na(age), age:= 15]
如果您想修改所有非 20 岁的单元格,包括年龄的其他有效值,我会执行以下操作:
# Creating a data frame with another valid age
df = data.frame( name= c("Tommy", "John", "Dan","Bob"), age = c(20, NA, NA,12) )
# Substitute values different than 20 for 15
df[df$age!=20 | is.na(df$age),"age"] <- 15
name age
1 Tommy 20
2 John 15
3 Dan 15
4 Bob 15
我有一个这样的数据集。
df = data.frame( name= c("Tommy", "John", "Dan"), age = c(20, NA, NA) )
我试着设置 15 y.o。给约翰和丹。
df[ ( df$age != 20) , ]$age = 15
但是我得到如下错误,
Error in [<-.data.frame(tmp, (df$age != 20), , value = list(name = c(NA_integer_, : missing values are not allowed in subscripted assignments of data frames
为这些缺失的单元格设置新值的好方法是什么?
试试这个:
df$age[is.na(df$age)] <- 15
或使用您的语法风格:
df[is.na(df$age), ]$age = 15
您得到的错误是因为 df$age != 20
产生以下内容:
[1] FALSE NA NA
age 列中的 NA
值在逻辑语句中未被正确解释为不等于二十。
我们可以使用is.na
library(data.table)
setDT(df)[is.na(age), age:= 15]
如果您想修改所有非 20 岁的单元格,包括年龄的其他有效值,我会执行以下操作:
# Creating a data frame with another valid age
df = data.frame( name= c("Tommy", "John", "Dan","Bob"), age = c(20, NA, NA,12) )
# Substitute values different than 20 for 15
df[df$age!=20 | is.na(df$age),"age"] <- 15
name age
1 Tommy 20
2 John 15
3 Dan 15
4 Bob 15