V1 V2 V3 V4 V5 V6
A B C D E F
first second third
AD BE CF
为此,我尝试使用lapply和一个自定义函数:
col_unite <- c(c('V1', 'V4', 'first'), c('V2', 'V5', 'second'), c('V3', 'V6', 'third'))
#function that combines columns and gives a new name
unite_cols <- function(dataframe, col_list){
dataframe[[col_list[3]]] <- paste0(dataframe[[col_list[1]]], ', ',
dataframe[[col_list[2]]])
dataframe
}
new_df <- lapply(col_unite, function(x){
df <- unite_cols(orig_df, x)
# df[x[3]] <- paste0(test[x[1]], ', ', test[x[2]]) # a different attempt
return(df)
})
我知道我可以用一堆联合声明来做到这一点,或者也许有一种方法可以用循环和联合来做到这一点。但是考虑到需要遍历的列数,我想尝试用一种更优雅的方式来完成它。
像这样的怎么样
n <- 4
rbind.data.frame(apply(matrix(df, nrow = n - 1), 1, paste0, collapse = ""))
# X.AD. X.BE. X.CF.
#1 AD BE CF
在这里,我们通过将data.frame
转换为n-1
行、paste0
ing行的n=4个
条目来组合每个n=4个
条目,并将生成的矩阵
转换回data.frame
条目。
唯一剩下的就是想出合适的列名。
df <- read.table(text =
"V1 V2 V3 V4 V5 V6
A B C D E F", header = T, colClasses = "character")
我有一些数据,其中每个id由不同的类型测量,这些类型可以有不同的值。测量值为val。一个小的虚拟数据如下所示: 那么df是: 我需要传播/投射数据,以便每个id的
输入的dput() 结构(列表(Varname=structure(1:6,.标签=c(“A”,“B”,“c”,“D”,“E”,“F”),类=“因子”),成分=结构(c(3L,1L,1L,4L,2L,1L),标签=c(“”,“A,c”,“B”,“c”),类=“因子”),名字=结构(c(5L,3L,2L,4L,6L),标签=c(“”,“鲍勃”,“凯茜”,“迪克,南希”,“杰克,布鲁斯”,“曼迪”),
本文向大家介绍如何在R中合并列表?,包括了如何在R中合并列表?的使用技巧和注意事项,需要的朋友参考一下 当我们有多个列表但它们具有相似的数据类型时,我们可能想要合并或合并这些列表。这将有助于使用,因为我们可以使用一个列表名称执行计算,而不是将其应用于多个列表名称。我们可以借助mapply函数组合多个列表。 示例 请看以下列表- 现在假设,我们还有一个列表,即List3,然后可以按照如下所示的相同方
我有一个不同长度的数据帧列表(df),按年份索引,数据的代理如下所示:
我有一个序列,其中我期望每个过程值与前一个相同或1。 我想要什么: 我用以下代码解决了这个问题: 然而,这看起来相当“肮脏”和低效。有没有计算上耗时更少的解决方案?