【发布时间】:2018-08-21 18:11:22
【问题描述】:
我有一个数据集,其中一个表的列完全是因子。其中唯一的数据是“是”或 NA 值。每一列只有一个因子级别,即是。我也想让 NA 成为一个因素水平。不幸的是,我对 addNA() 函数的理解很差。请有人帮我以更简洁的方式将 NA 作为因子级别添加到整个数据集,而不是我必须为每列单独输入。谢谢
xl<- structure(list(G = structure(c(1L, NA, NA, NA, NA,
NA, NA, NA, NA, NA), .Label = "yes", class = "factor"), A = structure(c(1L, 1L, NA, NA, NA, 1L, NA, NA, 1L, 1L), .Label = "yes", class = "factor"),
L = structure(c(2L, 2L, NA, NA, 2L, 2L, 2L,
NA, 2L, 2L), .Label = c("no", "yes"), class = "factor"),
P = structure(c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_), .Label = "yes", class = "factor"),
C = structure(c(NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_), .Label = "yes", class = "factor"),
S = structure(c(NA, NA, NA, NA, NA, NA, 1L, NA, NA,
NA), .Label = "yes", class = "factor"), M = structure(c(NA,
NA, 1L, NA, NA, NA, 1L, NA, NA, NA), .Label = "yes", class = "factor"),
F = structure(c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_), .Label = "yes", class = "factor")), .Names = c("G", "A", "L", "P", "C", "S", "M", "F"), row.names = c("row_1", "row_2", "row_3", "row_4", "row_5", "row_6", "row_7", "row_8", "row_10", "row_11"), class = "data.frame")
xl <- addNA(xl)
【问题讨论】:
-
您需要将
addNA应用于列,而不是整个data.frame。试试xl[] <- lapply(xl, addNA)或者dplyr,xl %>% mutate_all(addNA) -
@MrFlick 啊,谢谢!!!我尝试做 xl[,1:8]
-
不是
apply而是lapply再看给出的代码.. -
@Onyambu 自动更正更正了我的 lapply 以应用于上一个答案,但在 R 上我输入了 lapply。不过感谢您的收获。