我有一个百分比数据框。我想在每个单元格的末尾添加一个“%”,以便可以正确导出/显示它们。看起来像
c1 c2
r1 2.1 3.5
r2 3.4 4.5
我想要:
c1 c2
r1 2.1% 3.5%
r2 3.4% 4.5%
我真的不需要输出明确地是一个数据框,而只是保留列和行名称的东西。
答案 0 :(得分:2)
要进一步控制格式,请考虑将sprintf()
与%%
格式化选项一起使用:
# One more column of values
df <- as.data.frame(rbind(c(2.1, 3.5, 2), c(3.4, 4.5, 1/3)))
dimnames(df) <- list(paste0("c", 1:2), paste0("r", 1:3))
# Compare these two approaches:
as.data.frame(lapply(df, paste0, "%"))
as.data.frame(lapply(df, function(x) sprintf("%3.1f%%", x)))
答案 1 :(得分:1)
最直接的方法可能是
df[] <- paste0(as.matrix(dataframe), "%")
我们还可以使用apply
df[] <- apply(df, 1, function(x) paste0(x, "%"))
另一种方法是使用dplyr中的mutate_all
,
library(dplyr)
dataframe %>%
mutate_all(list(~paste0(., "%")))