我对R很新,我正在研究一个有几个NULL值的数据框。到目前为止,我无法取代那些,我无法解决一个解决方案,所以如果有人能帮助我会很棒。
所有出现NULL值的变量都被归类为因子。
如果我使用函数is.null(data),答案是FALSE,这意味着必须替换才能生成一个像样的图形。
我可以使用set.seed替换所有NULL值,还是需要使用其他函数?
答案 0 :(得分:3)
您可以使用dplyr
和replace
数据
df <- data.frame(A=c("A","NULL","B"), B=c("NULL","C","D"), stringsAsFactors=F)
溶液
library(dplyr)
ans <- df %>% replace(.=="NULL", NA) # replace with NA
输出
A B
1 A <NA>
2 <NA> C
3 B D
另一个例子
ans <- df %>% replace(.=="NULL", "Z") # replace with "Z"
输出
A B
1 A Z
2 Z C
3 B D
答案 1 :(得分:2)
通常,R对NA值而不是NULL值更好。如果用NULL值表示该值实际上表示&#34; NULL&#34;,而不是空值,则可以使用此值将NULL因子值替换为NA:
df <- data.frame(Var1=c('value1','value2','NULL','value4','NULL'),
Var2=c('value1','value2','value3','NULL','value5'))
#Before
Var1 Var2
1 value1 value1
2 value2 value2
3 NULL value3
4 value4 NULL
5 NULL value5
df <- apply(df,2,function(x) suppressWarnings(levels(x)<-sub("NULL", NA, x)))
#After
Var1 Var2
[1,] "value1" "value1"
[2,] "value2" "value2"
[3,] NA "value3"
[4,] "value4" NA
[5,] NA "value5"
这实际上取决于列的内容是什么样的。以上只有在不是数字的列的情况下才有意义。如果列中的值是数字,则使用as.numeric()将自动删除不是数字的所有内容。请注意,在转换为数字之前将因子转换为字符很重要;所以使用as.numeric(as.character(x)),如下所示:
df <- data.frame(Var1=c('1','2','NULL','4','NULL'))
df$Var1 <- as.numeric(as.character(df$Var1))
#After
Var1
1 1
2 2
3 NA
4 4
5 NA