Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从dataframe中的前2个元素创建一个字符串,并添加到R中的新列_R - Fatal编程技术网

从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我想你可以直接在我的答案中应用这个方法,它可以处理任意数量的列。参见我编辑的示例这不是答案。请插入代码使其成为一个。这不是答案。请插入代码使其成为一个。