跨数据框的特定列按行连接 [英] Concatenate row-wise across specific columns of dataframe
本文介绍了跨数据框的特定列按行连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个带有列的数据框,当将这些列连接(按行)作为字符串时,我可以将数据框划分为所需的形式.
I have a data frame with columns that, when concatenated (row-wise) as a string, would allow me to partition the data frame into a desired form.
> str(data)
'data.frame': 680420 obs. of 10 variables:
$ A : chr "2011-01-26" "2011-01-26" "2011-02-09" "2011-02-09" ...
$ B : chr "2011-01-26" "2011-01-27" "2011-02-09" "2011-02-10" ...
$ C : chr "2011-01-26" "2011-01-26" "2011-02-09" "2011-02-09" ...
$ D : chr "AAA" "AAA" "BCB" "CCC" ...
$ E : chr "A00001" "A00002" "B00002" "B00001" ...
$ F : int 9 9 37 37 37 37 191 191 191 191 ...
$ G : int NA NA NA NA NA NA NA NA NA NA ...
$ H : int 4 4 4 4 4 4 4 4 4 4 ...
对于每一行,我想将 F、E、D 和 C 列中的数据连接成一个字符串(下划线字符作为分隔符).以下是我在这方面的失败尝试:
For each row, I would like to concatenate the data in columns F, E, D, and C into a string (with the underscore character as separator). Below is my unsuccessful attempt at this:
data$id <- sapply(as.data.frame(cbind(data$F,data$E,data$D,data$C)), paste, sep="_")
下面是不想要的结果:
> str(data)
'data.frame': 680420 obs. of 10 variables:
$ A : chr "2011-01-26" "2011-01-26" "2011-02-09" "2011-02-09" ...
$ B : chr "2011-01-26" "2011-01-27" "2011-02-09" "2011-02-10" ...
$ C : chr "2011-01-26" "2011-01-26" "2011-02-09" "2011-02-09" ...
$ D : chr "AAA" "AAA" "BCB" "CCC" ...
$ E : chr "A00001" "A00002" "B00002" "B00001" ...
$ F : int 9 9 37 37 37 37 191 191 191 191 ...
$ G : int NA NA NA NA NA NA NA NA NA NA ...
$ H : int 4 4 4 4 4 4 4 4 4 4 ...
$ id : chr [1:680420, 1:4] "9" "9" "37" "37" ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "V1" "V2" "V3" "V4"
任何帮助将不胜感激.
推荐答案
尝试
data$id <- paste(data$F, data$E, data$D, data$C, sep="_")
相反.向量化代码的美妙之处在于您不需要逐行循环或循环等效的 *apply 函数.
instead. The beauty of vectorized code is that you do not need row-by-row loops, or loop-equivalent *apply functions.
编辑更好的是
data <- within(data, id <- paste(F, E, D, C, sep=""))
这篇关于跨数据框的特定列按行连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文