gpt4 book ai didi

r - 如何用R数据框中的NA替换空字符串?

转载 作者:行者123 更新时间:2023-12-04 13:07:54 25 4
gpt4 key购买 nike

我的第一种方法是从csv读取数据时使用na.strings=""。由于某些原因,这不起作用。我也尝试过:

df[df==''] <- NA


这给了我一个错误:无法使用矩阵或数组进行列索引。

我只尝试了以下列:

df$col[df$col==''] <- NA


即使将空字符串之外的其他值也可以将整个数据帧中的每个值转换为NA。

然后我尝试使用 mutate_all

replace.empty <- function(a) {
a[a==""] <- NA
}

#dplyr pipe
df %>% mutate_all(funs(replace.empty))


这还将整个数据帧中的每个值转换为NA。

我怀疑我的“空”字符串有些奇怪,因为第一种方法没有效果,但是我不知道是什么。

编辑(应MKR的要求)
dput(head(df))的输出:

structure(c("function (x, df1, df2, ncp, log = FALSE) ", "{",
" if (missing(ncp)) ", " .Call(C_df, x, df1, df2, log)",
" else .Call(C_dnf, x, df1, df2, ncp, log)", "}"), .Dim = c(6L,
1L), .Dimnames = list(c("1", "2", "3", "4", "5", "6"), ""), class =
"noquote")

最佳答案

我不确定为什么df[df==""]<-NA不能用于OP。让我们来一个样本data.frame并研究选项。

选项1:Base-R

df[df==""]<-NA

df
# One Two Three Four
# 1 A A <NA> AAA
# 2 <NA> B BA <NA>
# 3 C <NA> CC CCC


选项2: dplyr::mutate_allna_if。或 mutate_if如果数据框具有多种类型的列

library(dplyr)

mutate_all(df, list(~na_if(.,"")))


要么

#if data frame other types of character Then
df %>% mutate_if(is.character, list(~na_if(.,"")))

# One Two Three Four
# 1 A A <NA> AAA
# 2 <NA> B BA <NA>
# 3 C <NA> CC CCC


玩具数据:

df <- data.frame(One=c("A","","C"), 
Two=c("A","B",""),
Three=c("","BA","CC"),
Four=c("AAA","","CCC"),
stringsAsFactors = FALSE)

df
# One Two Three Four
# 1 A A AAA
# 2 B BA
# 3 C CC CCC

关于r - 如何用R数据框中的NA替换空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51449243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com