gpt4 book ai didi

r - 如何替换数据框列表中的单个值

转载 作者:行者123 更新时间:2023-12-02 06:26:49 25 4
gpt4 key购买 nike

我有一个数据框列表如下:

dat_1 <- data.frame(x = c("A", "B", "C", "D") %>% as.factor)
dat_2 <- data.frame(x = c("A", "B", "C", "D") %>% as.character)
dat <- list("dat_1" = dat_1, "dat_2" = dat_2)

有些列是因子,有些是字符。我需要用 NA 替换列表中所有数据帧的任何“C”实例。我将如何做到这一点?

我知道我可以使用以下代码完成此操作,但我希望尽可能避免对列表中的每个数据帧进行硬编码:

dat[["dat_2"]][dat[["dat_2"]] == "C"] <- NA

最佳答案

首先,您创建数据框的方式将导致数据框的列成为所有因素。我按如下方式修改了您的代码,使第一个数据框成为因子,第二个数据框成为字符。

dat_1 <- data.frame(x = c("A", "B", "C", "D"))
dat_2 <- data.frame(x = c("A", "B", "C", "D"), stringsAsFactors = FALSE)
dat <- list("dat_1" = dat_1, "dat_2" = dat_2)

我们可以使用以下代码将所有“C”替换为NA

dat2 <- lapply(dat, function(x){
x[] <- lapply(x, function(x) replace(x, x %in% "C", NA))
return(x)
})

dat2
# $dat_1
# x
# 1 A
# 2 B
# 3 <NA>
# 4 D
#
# $dat_2
# x
# 1 A
# 2 B
# 3 <NA>
# 4 D

代码不会改变列类型。

lapply(dat2, function(x) sapply(x, class))
# $dat_1
# x
# "factor"
#
# $dat_2
# x
# "character"

关于r - 如何替换数据框列表中的单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151393/

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