识别、计数和标记列中的空格?
Identifying, counting, AND labelling spaces in a column?
我在 R 中有一个 1 列的数据框。里面有一堆名字,例如克莱尔·兰德尔·弗雷泽。我知道如何制作一个循环函数,将第二个函数应用于每个单元格。但我仍然坚持如何创建第二个功能,即在每个单元格中识别和标记每个 space (" ")。例如。克莱尔[1]兰德尔[2]弗雷泽
有办法吗?
提前致谢,请解释一下,就像我是 R 的初学者一样。
这是使用多种方法的初步解决方案:
数据:
str <- c("Claire Randall Fraser", "Peter Dough", "Orson Dude Welles Man")
解决方案:
library(data.table)
library/dplyr)
data.frame(str) %>%
# create row ID:
mutate(row = row_number()) %>%
# split strings into separate words:
separate_rows(str, sep = " ") %>%
# for each `row`:
group_by(row) %>%
# create two new columns:
mutate(
# add a column with the run-length number enclosed in "[]":
add = paste0("[", cumsum(rleid(row)), "]"),
# paste the separate names and the values in `add` together:
str_0 = paste0(str, add)) %>%
# put everything back onto the original rows:
summarise(str = paste0(str_0, collapse = "")) %>%
# deactivate grouping:
ungroup() %>%
# remove string-final `[...]`:
mutate(str = sub("\[\d+\]$", "", str))
结果:
# A tibble: 3 × 2
row str
<int> <chr>
1 1 Claire[1]Randall[2]Fraser
2 2 Peter[1]Dough
3 3 Orson[1]Dude[2]Welles[3]Man
我在 R 中有一个 1 列的数据框。里面有一堆名字,例如克莱尔·兰德尔·弗雷泽。我知道如何制作一个循环函数,将第二个函数应用于每个单元格。但我仍然坚持如何创建第二个功能,即在每个单元格中识别和标记每个 space (" ")。例如。克莱尔[1]兰德尔[2]弗雷泽
有办法吗? 提前致谢,请解释一下,就像我是 R 的初学者一样。
这是使用多种方法的初步解决方案:
数据:
str <- c("Claire Randall Fraser", "Peter Dough", "Orson Dude Welles Man")
解决方案:
library(data.table)
library/dplyr)
data.frame(str) %>%
# create row ID:
mutate(row = row_number()) %>%
# split strings into separate words:
separate_rows(str, sep = " ") %>%
# for each `row`:
group_by(row) %>%
# create two new columns:
mutate(
# add a column with the run-length number enclosed in "[]":
add = paste0("[", cumsum(rleid(row)), "]"),
# paste the separate names and the values in `add` together:
str_0 = paste0(str, add)) %>%
# put everything back onto the original rows:
summarise(str = paste0(str_0, collapse = "")) %>%
# deactivate grouping:
ungroup() %>%
# remove string-final `[...]`:
mutate(str = sub("\[\d+\]$", "", str))
结果:
# A tibble: 3 × 2
row str
<int> <chr>
1 1 Claire[1]Randall[2]Fraser
2 2 Peter[1]Dough
3 3 Orson[1]Dude[2]Welles[3]Man