确定数据框中特定单元格中字符串的大小:R

Determine the size of string in a particular cell in dataframe: R

在数据框中,我有一列(类型:chr),其中包含以逗号分隔的答案。我想根据字符串的大小和奖励分数创建另一列。例如,列中的一些条目是:

第 1 列
单词 1、单词 2、单词 3
单词 1、单词 2
单词 1

现在,对于第一个单元格,我希望将单元格的大小评估为 3(因为它包含三个不同的单词并且单元格值中没有重复项)。我不确定如何实现这一目标。

一个选项是将 strsplit 的列拆分为 vectorlist,通过遍历 list 获取 unique 元素使用 lapply 并获得 lengths

df1$Size <- lengths(lapply(strsplit(df1$Column1, ",\s*"), unique))

另一个选项是 separate_rows 来自 tidyr

library(dplyr)
library(tidyr)
df1 %>% 
  mutate(rn = row_number()) %>%
  separate_rows(Column1) %>%
  group_by(rn) %>%
  summarise(Size = n_distinct(Column1), .groups = 'drop') %>%
  select(Size) %>%
  bind_cols(df1, .)

-输出

#            Column1 Size
#1 word1,word2,word3    3
#2       word1,word2    2
#3             word1    1

数据

df1 <- data.frame(Column1 = c('word1,word2,word3', 'word1,word2', 'word1'))

原答案:

另一个选项:

library(dplyr)
library(stringr)

df %>%
  mutate(Lengths = str_count(Column1, ",") + 1)

编辑:

我没有正确注意到 OP 要求(关于不重复)。正如@Onyambu 在评论中指出的那样,只有在数据中没有重复的单词 时,这个块才会起作用。

基本上就是统计字数。