我在R中是一个新手,必须算出一个操作示例,该操作在单个向量中出现某个字符串后就创建一个新行。
该向量在此处说明:
address_list <- c("Road","Number","City","Zipcode","Telephone","House","Road","Number","City","Zipcode","House","Road","Number","City","Zipcode","Telephone","House")
该操作是在每次出现“房屋”时都创建一个新行。将向量放到一个矩阵中去:
Road,Number,City,Zipcode,Telephone,House
road,Number,City,Zipcode,,House
road,Number,City,Zipcode,Telephone,House
我对Excel或VBA一无所知。但是我可以想象这个问题与我要在R中构造的操作差不多。
我想出了一些伪代码,可能会给出一个更直观的示例,说明如何解决此操作。
gsub(list, \s, ",")
For
every "House" in list as i
rbind(list, \n, i)
我们unique
从向量('address_list')中获取元素,循环遍历并提取'address_list'中的元素(或使用split
ie lst <- split(address_list, address_list)
),对于小于最大list
元素的元素,在末尾填充NA ,以创建一个(' m1'),并使用创建的序列。length
length
cbind
matrix
paste
ave
lst <- lapply(unique(address_list), function(x) address_list[address_list==x])
m1 <- do.call(cbind, lapply(lst, `length<-`, max(lengths(lst))))
m1[] <- ifelse(is.na(m1), NA, paste0(m1, ave(m1, m1, FUN = seq_along)))
m1
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] "Road1" "Number1" "City1" "Zipcode1" "Telephone1" "House1"
#[2,] "Road2" "Number2" "City2" "Zipcode2" "Telephone2" "House2"
#[3,] "Road3" "Number3" "City3" "Zipcode3" NA "House3"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句