[英]create a string from first 2 elements in dataframe and add to new column in R
I think this is fairly simple, say I have a data frame我认为这相当简单,比如说我有一个数据框
> vadata
va1 va2
1 a c
2 b d
I want to create a new column va3 = "ac" and "bd" for all rows in vadata and append to vadata?我想为 vadata 中的所有行创建一个新列 va3 = "ac" 和 "bd" 并附加到 vadata?
vadata is of type dataframe. vadata 是数据框类型。
Is there an easy to way do this in r?在 r 中是否有一种简单的方法可以做到这一点?
你可以使用paste
来做到这一点。
vadata$va3 <- paste(vadata$va1,vadata$va2,sep="-")
You can use the mutate() from dplyr library.您可以使用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
Using mutate(), at a time you can create multiple columns.使用 mutate(),您可以一次创建多个列。 For example:
例如:
vadata = vadata %>% mutate(va3 = paste(va1,va2, sep='-'),
va4 = paste(va3,va2, sep='-))
You can try the following base R code, which applies to any number of columns您可以尝试以下基本 R 代码,它适用于任意数量的列
vadataout <- cbind(vadata,matrix(paste(vadata[,1],as.matrix(vadata[-1]),sep = "-"),nrow = nrow(vadata)))
Example例子
vadata <- data.frame(matrix(1:60,nrow = 2))
> vadata
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30
1 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59
2 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60
and you will get你会得到
> vadataout
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 X30 1 2 3 4 5 6 7
1 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 1-3 1-5 1-7 1-9 1-11 1-13 1-15
2 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 2-4 2-6 2-8 2-10 2-12 2-14 2-16
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
1 1-17 1-19 1-21 1-23 1-25 1-27 1-29 1-31 1-33 1-35 1-37 1-39 1-41 1-43 1-45 1-47 1-49 1-51 1-53 1-55 1-57 1-59
2 2-18 2-20 2-22 2-24 2-26 2-28 2-30 2-32 2-34 2-36 2-38 2-40 2-42 2-44 2-46 2-48 2-50 2-52 2-54 2-56 2-58 2-60
因为我正在做 35 个类别,所以我发现遍历每一行 nrow() 的 for 循环是最简单和最简单的解决方案,并且适用于基础 R。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.