我有一个包含3列的数据框.数据看起来像这样
V1 V2 V3 Auto = Chevy Engine = V6 Trans = Auto Auto = Chevy Engine = V8 Trans = Manual Auto = Chevy Engine = V10 Trans = Manual
我希望数据框看起来像这样:
Auto Engine Trans Chevy V6 Auto Chevy V8 Manual Chevy V10 Manual
换句话说,检索"="之后的最后一个字符串,并获取列中的第一个值,并使其成为列标题.或者只是检索"="之后的最后一个单词并将其替换为列而不添加新列的方法.
这可以在R中完成吗?非常感谢!
好吧,如果你不介意只使用旧式(前哈德利)R,这是一个解决方案:
> x <- as.data.frame(list(c('Auto = Chevy', 'Auto = Chevy', 'Auto = Chevy'), + c('Engine = V6', 'Engine = V8', 'Engine = V10'), + c('Trans = Auto', 'Trans = Manual', 'Trans = Manual')), + stringsAsFactors=FALSE) > values <- lapply(x, gsub, pattern='.*= ', replacement='') > new.names <- lapply(x, gsub, pattern=' =.*', replacement='') > new.names <- lapply(new.names, unique) > names(values) <- new.names > new.frame <- as.data.frame(values, stringsAsFactors = FALSE) > new.frame Auto Engine Trans 1 Chevy V6 Auto 2 Chevy V8 Manual 3 Chevy V10 Manual
它不适用于具有许多列的数据框,但它适用于具有许多行的窄数据框.