【发布时间】:2018-06-20 19:04:20
【问题描述】:
structure(list(Switch = c("4", "3"), `1` = c("1, 2, 3, 4",
NA), `2` = c("1, 2, 3, 4", NA), `3` = c("1, 2, 3, 4, 6, 7",
NA), `4` = c("1, 2, 3, 4, 5, 6", NA), `5` = c("1, 2, 3, 4",
"1"), `6` = c("1, 2, 3, 4", NA
)), .Names = c("Switch", "1", "2", "3", "4", "5",
"6"), row.names = 1:2, class = "data.frame")
鉴于上述数据框。我想让 R 计算每个元素中有多少个数字(用逗号分隔)。例如,包含列表1, 2, 3, 4 的元素包含 4 个数字。
我希望 R 计算在转换年之前(第 1 列)和转换年之后每行有多少总数。
以第一行为例;切换年份是 4,在第 1 年有 4 个不同的数字,在第 2 年有 4,在第 3 年有 6。所以 R 在新列中添加总数为 4+4+6=14。然后它对转换年份之后的年份(第 5 年和第 6 年)执行相同的操作,并在第二个新列中输出总和。
在我的一次搜索中,建议使用 stringi 包中的函数 stri_extract_all_regex,但我只能让它工作一列/年,而且它似乎也将 NA 值计算为好吧,它不应该这样做。
下面的代码给出了预期的输出:
structure(list(Switch = c("4", "3"), `1` = c("1, 2, 3, 4",
NA), `2` = c("1, 2, 3, 4", NA), `3` = c("1, 2, 3, 4, 6, 7",
NA), `4` = c("1, 2, 3, 4, 5, 6", NA), `5` = c("1, 2, 3, 4",
"1"), `6` = c("1, 2, 3, 4", NA
), `Before` = c("15", 0), `After` = c("8", 1)
), .Names = c("Switch", "1", "2", "3", "4", "5",
"6", "Before", "After"), row.names = 1:2, class = "data.frame")
【问题讨论】:
-
你能发布预期的输出吗?
-
lapply(df, stringi::stri_count_words)? -
@Moody_Mudskipper。我已经更新了问题以包含预期的输出。
标签: r