我正在尝试更改数据框中的列,以使<10的数字四舍五入到小数点后一位。大于等于10的数字应被截断,小数点后的所有数字都应删除。
以下是一些代码:
df <- tibble (
x = c(1.2, 3.4, 6.7, 11.44, 15.9)
)
test_trunc_ifelse <- ifelse(df$x < 10, round(df$x, digits = 1), trunc(df$x))
test_trunc <- trunc(df$x)
和一些结果:
test_trunc_ifelse
[1] 1.2 3.4 6.7 11.0 15.0
test_trunc
[1] 1 3 6 11 15
我认为(并想要)ifelse
输出以下内容:
[1] 1.2 3.4 6.7 11 15
为什么不这样做?以及如何获得该输出?
答案 0 :(得分:1)
您想要的是两个类numeric
和integer
,并且不可能在同一向量中包含两个类。
如果您仍然希望获得预期的输出,则可以将其转换为字符
test <- as.character(ifelse(df$x < 10, round(df$x, digits = 1), trunc(df$x)))
test
#[1] "1.2" "3.4" "6.7" "11" "15"
但是您不能以此执行任何数学计算。为此,您需要再次将其转换为数字或整数。
as.numeric(test)
#[1] 1.2 3.4 6.7 11.0 15.0
as.integer(test)
#[1] 1 3 6 11 15