【发布时间】:2021-09-26 10:48:17
【问题描述】:
我有一个结构如下的小标题:
structure(list(c("All", "Males", "Females"), `All Ages` = c("8.7\n \n \n 6,315",
"8.6\n \n \n 3,306",
"8.7\n \n \n 1,136"
), `<18` = c("9.5\n \n \n 19",
"9.5\n \n \n 14",
"10.0\n \n \n 3"
), `18-29` = c("8.7\n \n \n 1,434",
"8.7\n \n \n 1,081",
"8.7\n \n \n 330"
), `30-44` = c("8.7\n \n \n 1,746",
"8.7\n \n \n 1,219",
"8.7\n \n \n 507"
), `45+` = c("8.5\n \n \n 951",
"8.4\n \n \n 730",
"8.8\n \n \n 212"
)), row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame"
))
看起来像这样:
# A tibble: 3 x 6
`` `All Ages` `<18` `18-29` `30-44` `45+`
<chr> <chr> <chr> <chr> <chr> <chr>
1 All "8.7\n … "9.5\n … "8.7\n … "8.7\n … "8.5\n …
2 Males "8.6\n … "9.5\n … "8.7\n … "8.7\n … "8.4\n …
3 Femal… "8.7\n … "10.0\n … "8.7\n … "8.7\n … "8.8\n …
我想从出现的每个单元格中删除换行符。所以我尝试了这样的事情:
df %>% mutate(`18-29` = str_replace_all(`18-29`, "\n", ""))
看看我是否可以让它只为一栏工作,但我没能做到。我尝试了很多变体(例如,将.$ 放在列名前面,只是一个.,尝试复制并粘贴在运行View(df) 后出现在每个单元格中的两个数据点之间的间隙,放置一个在\n 之前附加转义\,删除列名称周围的刻度线`,将它们替换为单个' 或双" 语音标记等),但没有一个有效。我遇到的最常见错误是Error in initialize(...) : attempt to use zero-length variable name。
最终,我想删除\n 字符,然后将每个带有数值的列分成两部分,前缀为cnt_ 和rating_(所以我最终会得到cnt_<18, rating_<18、cnt_18-29、rating_18-29 等)。
【问题讨论】:
-
即,通过摆脱 \n ,您将在其中一行中拥有
"8.7 1,434"。将它们结合起来的逻辑是什么?会是 8.71434 吗?还是? -
我想在空白处分开。我可以用
separate处理这个问题,只是想事先删除\n