Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将天花板应用于数据帧,同时忽略非数值_R_Dplyr_Time Series - Fatal编程技术网

R 将天花板应用于数据帧,同时忽略非数值

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"

我有一个超过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", "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”
)嵌入到帧的列中是非常困难的,尽管这当然是可能的(通过嵌套)。