r - 如何将 lapply 用于 concat.split()
问题描述
如何使用lapply
相同的分隔符“,”将列拆分为多列。从我正在使用的数据框的第 12 列到第 14 列,有多个单词字符串,我想用分隔符“,”在每一列中拆分。
因此,某些行之间c(12:14)
最多有两到四个逗号分隔符。因此,我不知道会从 concat.split 创建多少新列。
我正在尝试使用concat.split
来完成工作。
这是我使用的代码,它不起作用。
library(splitstackshape)
concatsplit<-function(x){concat.split(.,"x",",")}
dataframe_concat<- lapply(dataframe[c(12:14)], concatsplit)
提前感谢您的指导!
解决方案
这个答案没有回答“如何使用 lapply”的问题。但是,如果您愿意使用其他软件包而不是splitstackshape
您可以使用 stringr 中的函数来查找分隔符的最大出现次数str_count
。然后,您可以使用此计数来判断separate
您将拥有多少额外的列。
library(dplyr)
library(tidyr)
library(stringr)
df <- tibble(a = c("a,b,c", "A,b", "A,B,C,C,D,E"),
b = 1:3)
#not run
#> df
# A tibble: 3 x 2
# a b
# <chr> <int>
#1 a,b,c 1
#2 A,b 2
#3 A,B,C,C,D,E 3
df %>%
separate(a,
into = paste0("a_",
as.character(1:(max(str_count(df$a, ","))+1))),
sep = ",")
# output:
## A tibble: 3 x 7
# a_1 a_2 a_3 a_4 a_5 a_6 b
# <chr> <chr> <chr> <chr> <chr> <chr> <int>
#1 a b c NA NA NA 1
#2 A b NA NA NA NA 2
#3 A B C C D E 3
推荐阅读
- c# - .NET 正确使用包
- mysql - 在 MySql 上查询和连接多个列
- javascript - 带有自定义标记和图标调整大小的 vue2-google-maps 出现问题,在缩小时放错了位置
- python - PyQt5 - 我可以在标签中文本的不同部分使用不同的字体大小吗?
- android - 有没有办法在不显示的情况下开始活动?
- asp.net-mvc - 关于 ASP.NET MVC 中的 RedirectToAction()
- javascript - 如何在视图上呈现数据而无需在 Angular 9 中刷新页面?
- javascript - Safari 显示不正确的图像方向但在 Chrome 上正确
- javascript - 如何使用 JavaScript 处理复杂的 100 位 (+/-) 乘以 100 位 (+/-) 的乘法,而不会出现溢出错误?
- python - 做 my_list = list(filter(None, my_list)) 的目的是什么