在R数据帧中,是否可以使用数字格式
x <- c(155.395227, 11.16707, NA, 0.259722)
显示为:
x <- c(155, 11, NA, 0.3)
我尝试使用prettyNum,但我不确定这是否可行。换句话说,如果x < 1然后显示1个小数点。
答案 0 :(得分:2)
这是使用apply函数的快速修复:
x <- c(155.395227, 11.16707, NA, 0.259722)
x2 <- c(123.4, 4.5, 0.2, 3)
df <- data.frame(x, x2)
apply(df, 2, function(input){ ifelse(input<1, format(round(input, 1), 1), format(round(input, 0), 0))})
不确定是否要进行舍入或只是截止,对两者都有效,只需删除格式中的舍入函数。
答案 1 :(得分:1)
如果我们需要字符输出,那么在执行ifelse
之后删除.
之后的0
sub("\\.0+$", "", ifelse(x< 1, round(x, 1), as.integer(x)))
#[1] "155" "11" NA "0.3"
但是,如果目标是存储不同的类类型,则将其存储为list
lapply(as.list(x), function(y) if(y < 1 & !is.na(y)) round(y, 1) else as.integer(y))
#[[1]]
#[1] 155
#[[2]]
#[1] 11
#[[3]]
#[1] NA
#[[4]]
#[1] 0.3