【发布时间】:2022-01-17 00:37:03
【问题描述】:
我想对逗号分隔的字符串列中的值进行舍入:
df <- structure(list(id = 1:8,
value = c("0.0081007", NA, NA,"0.00699123",
"0.175555, 0.106897, 0.0289, 0.255005",
NA, NA, "0.0047777, 0.8970001")),
class = c("tbl_df", "tbl", "data.frame"),
row.names = c(NA, -8L))
我可以如下图所示,但怀疑这是最简洁/最有效的方式:
library(dplyr)
df %>%
mutate(value = lapply(str_extract_all(value, "[\\d.]+"), function(x) round(as.numeric(x), 3))) %>%
unnest(value) %>%
group_by(id) %>%
summarise(
value = toString(value))
# A tibble: 8 × 2
id value
<int> <chr>
1 1 0.008
2 2 NA
3 3 NA
4 4 0.007
5 5 0.176, 0.107, 0.029, 0.255
6 6 NA
7 7 NA
8 8 0.005, 0.897
有没有更短/更简洁的dplyr 方式?
【问题讨论】:
-
您也可以在单个 mutate 行中使用此问题的最佳答案,但这确实需要另一个库,并且对于某些人来说可能不太直观地看到发生了什么。 stackoverflow.com/questions/38204034/…