我有一個數據框,每列中混合了字符和數字,最終被認為是這樣的字符列:
df1 <- data.frame(
Group = c('Type', 'State', 'Roads'),
Value1 = c('A', 'Florida', 107.188887)
)
我想將數字數據點四捨五入到第十位,但鑑於它們與其他數據類型混合,這似乎不可能。有沒有辦法使用 R 進行四捨五入?結果如下所示:
df_desired <- data.frame(
Group = c('Type', 'State', 'Roads'),
Value1 = c('A', 'Florida', 107.2)
)
如果可能,我寧願避免旋轉 df。
查找只有數字的元素並round
在base R
其本身執行ing
i1 <- grep("^[0-9.]+$", df1$Value1)
df1$Value1[i1] <- round(as.numeric(df1$Value1[i1]), 1)
-輸出
> df1
Group Value1
1 Type A
2 State Florida
3 Roads 107.2
如果是整個數據集,請使用 lapply
df1[] <- lapply(df1, function(x) {
i1 <- grep("^[0-9.]+$", x)
x[i1] <- round(as.numeric(x[i1]), 1)
x
})
-輸出
> df1
Group Value1
1 Type A
2 State Florida
3 Roads 107.2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句