应用函数组合列(Apply function to combine columns)

编程入门 行业动态 更新时间:2024-10-28 14:26:22
应用函数组合列(Apply function to combine columns)

我有一个包含许多列的数据框,我想组合从第5列开始的列。我尝试使用apply来执行此操作。

数据框:

1 682333 191.858 191517119 C A C A A A C A A A A A 2 1862626 71.9275 56032940 A C C C A A A C A C A A 3 11957134 155.78 150230950 B B B B A B A B A B A B 4 2516482 51.2692 31496569 B A A A A A A A A A A A 5 9378200 51.2798 31572927 A A B B B A A A A A B A 6 2071534 52.1573 32824318 A B A B A B A B B B A B 7 2074633 33.068 19035920 A A B A A A B A B A B A 8 7856856 121.811 117540910 A A A A A A A A B A B A 9 3741206 2.18574 2169864 A A A A A A A A A A A A 10 4411364 12.5959 24191374 C C A C A C C C A C A C

输出:

1 682333 191.858 191517119 CA CA AA CA AA AA 2 1862626 71.9275 56032940 AC CC AA AC AC AA 3 11957134 155.78 150230950 BB BB AB AB AB AB 4 2516482 51.2692 31496569 BA AA AA AA AA AA 5 9378200 51.2798 31572927 AA BB BA AA AA BA 6 2071534 52.1573 32824318 AB AB AB AB BB AB 7 2074633 33.068 19035920 AA BA AA BA BA BA 8 7856856 121.811 117540910 AA AA AA AA BA BA 9 3741206 2.18574 2169864 AA AA AA AA AA AA 10 4411364 12.5959 24191374 CC AC AC CC AC AC

我试过这样的:

col <- apply(df[,-1:-4], 2, function(x) {paste(x,x+1,sep="")} df <- cbind(df[,1:4],col)

但是有一个错误:

x + 1中的错误:二元运算符的非数字参数。

I have a data frame with many columns and I would like to combine columns started from column 5. I try to use apply to do this.

Data Frame:

1 682333 191.858 191517119 C A C A A A C A A A A A 2 1862626 71.9275 56032940 A C C C A A A C A C A A 3 11957134 155.78 150230950 B B B B A B A B A B A B 4 2516482 51.2692 31496569 B A A A A A A A A A A A 5 9378200 51.2798 31572927 A A B B B A A A A A B A 6 2071534 52.1573 32824318 A B A B A B A B B B A B 7 2074633 33.068 19035920 A A B A A A B A B A B A 8 7856856 121.811 117540910 A A A A A A A A B A B A 9 3741206 2.18574 2169864 A A A A A A A A A A A A 10 4411364 12.5959 24191374 C C A C A C C C A C A C

Output:

1 682333 191.858 191517119 CA CA AA CA AA AA 2 1862626 71.9275 56032940 AC CC AA AC AC AA 3 11957134 155.78 150230950 BB BB AB AB AB AB 4 2516482 51.2692 31496569 BA AA AA AA AA AA 5 9378200 51.2798 31572927 AA BB BA AA AA BA 6 2071534 52.1573 32824318 AB AB AB AB BB AB 7 2074633 33.068 19035920 AA BA AA BA BA BA 8 7856856 121.811 117540910 AA AA AA AA BA BA 9 3741206 2.18574 2169864 AA AA AA AA AA AA 10 4411364 12.5959 24191374 CC AC AC CC AC AC

I tried like this:

col <- apply(df[,-1:-4], 2, function(x) {paste(x,x+1,sep="")} df <- cbind(df[,1:4],col)

But there is an error:

Error in x + 1 : non-numeric argument to binary operator.

最满意答案

我们可以通过使用seq从第5列开始对交替列进行子集,转换为matrix ,将等大小的矩阵paste在一起,将输出分配回列数的一半,将所选列子集化以创建新数据集来paste列

df1[5:10] <- paste(as.matrix(df1[seq(5, ncol(df1), by = 2)]), as.matrix(df1[seq(6, ncol(df1), by = 2)]), sep="") df2 <- df1[1:10]

We can paste the columns by subsetting the alternating columns starting from column 5 using seq, convert to matrix, paste the equally sized matrices together, assign the output back to half the number of columns, subset the selected columns to create a new dataset

df1[5:10] <- paste(as.matrix(df1[seq(5, ncol(df1), by = 2)]), as.matrix(df1[seq(6, ncol(df1), by = 2)]), sep="") df2 <- df1[1:10]

更多推荐

本文发布于:2023-07-05 22:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1042356.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组合   函数   Apply   columns   combine

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!