我一直在尝试在具有多个值的数据帧中对数字进行舍入,但找不到方法。尝试设置options(digits = 6)
,本主题中提供的解决方案以及其他一些解决方案。我的数据帧如下所示:
structure(list(X__1 = c("Start", "End", "EFM", "UTH", "PEU",
"HPX"), `TecM` = c("Mar-00", "Mar-01", "NA", "NA",
"-9.6432560109885879E-2", "-0.26834090581750103"), `TerA` = c("Sep-01",
"Sep-01", "NA", "NA", "0", "-0.11600490599886504"), `GloC` = c("Nov-07",
"Mar-09", "-0.62921737727223548", "NA", "-0.54549924666990268",
"-0.54518556256613238"), `ECis` = c("Jul-11",
"Sep-11", "-0.2912541254125412", "NA", "-0.21781440969547586",
"-0.18769305803934319"), `OSe` = c("Jul-14", "Dec-14",
"-0.10996326905417812", "-3.4236420002695674E-2", "-2.8281230134625412E-2",
"4.8566639665387892E-2")), .Names = c("X__1", "TecM",
"TerA", "GloC", "ECis",
"Oil Selloff"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-6L))
有什么简单的选择吗?
我想还有一个tibble
的解决方案,但我总是对tibbles
中的列等选择感到困惑。这就是为什么我把它改成data.frame
.
jnk1 <- as.data.frame(jnk)
numeric_values <- !is.na(apply(jnk1, 2, as.numeric))
jnk1[numeric_values] <- round(as.numeric(jnk1[numeric_values]),1)
假设您的数据称为ink
。将其另存为data.frame
。检查哪些值可以解析为数字,然后用舍入值覆盖它们。
由于可能存在警告,因此您可以使用此行禁止显示它们
numeric_values <- suppressWarnings(!is.na(apply(jnk1, 2, as.numeric)))
如果只是为了便于查看,则以下行会将表中的所有数字值舍入为 2 位数字:
# assume df is your original data frame
suppressWarnings(data.frame(lapply(df, function(y) ifelse(is.na(as.numeric(y)), y, round(as.numeric(y), 2)))))
# result
X__1 TecM TerA GloC ECis Oil.Selloff
1 Start Mar-00 Sep-01 Nov-07 Jul-11 Jul-14
2 End Mar-01 Sep-01 Mar-09 Sep-11 Dec-14
3 EFM NA NA -0.63 -0.29 -0.11
4 UTH NA NA NA NA -0.03
5 PEU -0.1 0 -0.55 -0.22 -0.03
6 HPX -0.27 -0.12 -0.55 -0.19 0.05
但是数据框中带有数字/字符串/日期的列仍然是一列字符。