R 将天花板应用于数据帧,同时忽略非数值
我有一个超过50000个不同个体的不同状态的数据框架。状态是整数、小数、空和字符的混合体。我想将R 将天花板应用于数据帧,同时忽略非数值,r,dplyr,time-series,R,Dplyr,Time Series,我有一个超过50000个不同个体的不同状态的数据框架。状态是整数、小数、空和字符的混合体。我想将天花()函数应用于数据框,但只更改数值,而其他内容保持不变 structure(list(`11/1/2014` = c("0", "NULL", "NULL", "NULL", "NULL", "NULL"), `12/1/2014` = c("0", "0", "0", "0", "0", "0"), `1/1/2015` = c("0", "0", "0", "0", "S"
天花()
函数应用于数据框,但只更改数值,而其他内容保持不变
structure(list(`11/1/2014` = c("0", "NULL", "NULL", "NULL", "NULL",
"NULL"), `12/1/2014` = c("0", "0", "0", "0", "0", "0"), `1/1/2015` = c("0",
"0", "0", "0", "S", "0"), `2/1/2015` = c("0", "0", "1.72", "0",
"S", "0")), row.names = c(NA, 6L), class = "data.frame")
当您试图将非数值强制为数值时,它们将变为NA。所以你可以使用这样一个函数:
ceil <- function(x) {
x_num <- suppressWarnings(as.numeric(x))
ifelse(!is.na(x_num),
as.character(ceiling(x_num)),
as.character(x))
}
transmute_all(yourdataframe, ceil)
# 11/1/2014 12/1/2014 1/1/2015 2/1/2015
# 1 0 0 0 0
# 2 NULL 0 0 0
# 3 NULL 0 0 2
# 4 NULL 0 0 0
# 5 NULL 0 S S
# 6 NULL 0 0 0
ceil所有三列都是字符
,因此这是不可操作的。您能提供实际数据吗?我建议您遵循中的建议,可能使用dput(x)
(但如果数据较大,则仅使用样本)。换句话说:在标准data.frame
中,您不能在单个列中包含数字、字母,甚至特殊的NULL
。一旦数字列(整数或浮点)中有一个字母,它就会将所有数字转换为字符串。将一个真正的NULL
(不是一个“NULL”
)嵌入到帧的列中是非常困难的,尽管这当然是可能的(通过嵌套)。