- 阅读权限
- 255
- 威望
- 2 级
- 论坛币
- 497611 个
- 通用积分
- 12827.5505
- 学术水平
- 517 点
- 热心指数
- 662 点
- 信用等级
- 353 点
- 经验
- 152600 点
- 帖子
- 2454
- 精华
- 1
- 在线时间
- 2048 小时
- 注册时间
- 2012-11-6
- 最后登录
- 2025-5-27
|
如果你的数据就这样,是规则的,那么可以用以下代码来实现:
- x <- 1:5
- y <- c("1,2","1,2,3","1,2,3","1,2,3","1,2")
- z <- c("a,b","a,b,c","a,b,c","a,b,c","a,b")
- or_df <- data.frame(x,y,z,stringAsFactors=FALSE)
- tranfun <- function(id,value){
- rawdata <- split(as.character(value),id)
- rawdata2 <- lapply(rawdata,function(x) unlist(strsplit(x,",")))
- repnum <- unlist(sapply(rawdata2,length))
- customer <- unlist(mapply(rep,id,repnum))
- caipin <- as.vector(unlist(rawdata2))
- return(data.frame(customer,caipin))
- }
- # 这里运行之后,需要改一下最后一列的名字
- cbind(tranfun(x,y),tranfun(x,z)[,2])
复制代码
|
|