从dataframe中的前2个元素创建一个字符串,并添加到R中的新列
我认为这相当简单,比如说我有一个数据框从dataframe中的前2个元素创建一个字符串,并添加到R中的新列,r,R,我认为这相当简单,比如说我有一个数据框 > vadata va1 va2 1 a c 2 b d 我想为vadata中的所有行创建一个新列va3=“a-c”和“b-d”,并附加到vadata vadata的类型为dataframe 在r中有没有一种简单的方法可以做到这一点?您可以使用粘贴来做到这一点 vadata$va3 <- paste(vadata$va1,vadata$va2,sep="-") vadata$va3您可以使用paste来执行此操作
> vadata
va1 va2
1 a c
2 b d
我想为vadata中的所有行创建一个新列va3=“a-c”和“b-d”,并附加到vadata
vadata的类型为dataframe
在r中有没有一种简单的方法可以做到这一点?您可以使用
粘贴
来做到这一点
vadata$va3 <- paste(vadata$va1,vadata$va2,sep="-")
vadata$va3您可以使用paste
来执行此操作
vadata$va3 <- paste(vadata$va1,vadata$va2,sep="-")
vadata$va3您可以使用dplyr库中的mutate()
library(dplyr)
vadata = vadata %>% mutate(va3 = paste(va1,va2, sep='-'))
vadata
va1 va2 va3
1 a c a-c
2 b d b-d
使用mutate(),一次可以创建多个列。例如:
vadata = vadata %>% mutate(va3 = paste(va1,va2, sep='-'),
va4 = paste(va3,va2, sep='-))
您可以使用dplyr库中的mutate()
library(dplyr)
vadata = vadata %>% mutate(va3 = paste(va1,va2, sep='-'))
vadata
va1 va2 va3
1 a c a-c
2 b d b-d
使用mutate(),一次可以创建多个列。例如:
vadata = vadata %>% mutate(va3 = paste(va1,va2, sep='-'),
va4 = paste(va3,va2, sep='-))
您可以尝试以下基本R代码,它适用于任意数量的列
vadataout <- cbind(vadata,matrix(paste(vadata[,1],as.matrix(vadata[-1]),sep = "-"),nrow = nrow(vadata)))
您可以尝试以下基本R代码,它适用于任意数量的列
vadataout <- cbind(vadata,matrix(paste(vadata[,1],as.matrix(vadata[-1]),sep = "-"),nrow = nrow(vadata)))
因为我做了35个类别,我发现通过每一行nrow()迭代for循环是最简单和最简单的解决方案,在基本R中有效。因为我做了35个类别,我发现通过每一行nrow()迭代for循环是最简单和最简单的解决方案,在基本R中有效。谢谢,如果我有30个列,每个列我想为其创建va1 va(col#)并附加到data.frame的末尾,那么有没有一种方法可以对其进行迭代,或者使用name()函数来获取列标题列表?抱歉,非常感谢你可以使用apply
和paste
:vadata$vaN我要找的是每对va1 va(col#)创建30列,并将其追加到表的末尾。如果我理解正确,你有一个包含30列的数据框,你想追加到此列1+2、2+3、3+4。。要添加15个新列?是的,或者基本上是(1-2,1-3,1-4,1-5,…,1-30)所以29个列要添加技术性的列,如果我要为每个列创建va1 va(col#)并附加到data.frame的末尾,有没有方法对其进行迭代,或者使用name()函数获取列标题列表?抱歉,非常感谢你可以使用apply
和paste
:vadata$vaN我要找的是每对va1 va(col#)创建30列,并将其追加到表的末尾。如果我理解正确,你有一个包含30列的数据框,你想追加到此列1+2、2+3、3+4。。要添加15个新列?是或基本上是(1-2,1-3,1-4,1-5,…,1-30)那么要添加29个列从技术上来说,如果我有30个列并且想要创建(1-2,1-3,1-4,…,1-30),我如何迭代?t手动输出会很混乱?@PEBguy我想你可以直接在我的答案中应用这个方法,它可以处理任意数量的列。请参阅我编辑的示例如果我有30个列,并且想要创建(1-2、1-3、1-4、…1-30),我如何迭代此列?t手动输出会很混乱?@PEBguy我想你可以直接在我的答案中应用这个方法,它可以处理任意数量的列。参见我编辑的示例这不是答案。请插入代码使其成为一个。这不是答案。请插入代码使其成为一个。