简体   繁体   English

从数据框中的前 2 个元素创建一个字符串并添加到 R 中的新列

[英]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.

相关问题 如何从 R 中的另一个 Dataframe 添加新列,对应于第一个数据帧中的特定样本 - How to add New Column from another Dataframe in R corresponding to the particular samples in First Data frame 从不同列中的另一个观察值中减去一个观察值,并将特定值添加到结果中以在 R 的第一列中创建一个新观察值 - Subtract an observation from another in different column and add a specific value to the result to create a new observation in the first column in R 数据帧的元素作为R中新数据帧的列名 - Elements of a dataframe as the column names of a new dataframe in R 通过将R中数据框的现有列中的值分组来创建新列 - create a new column by grouping values from an existing column of a dataframe in R 在列表的每个数据框中创建新列,并根据位置 (R) 从字符向量中填充字符串 - Create new column in each dataframe of list and fill with string from character vector based on position (R) 将 vector 中的元素添加到 R 中 dataframe 的每第 n 列 - Add elements from vector to every nth column of dataframe in R 从 R 中的 dataframe 列中提取唯一的字符串元素 - Extract unique string elements from dataframe column in R 从包含元素和空格的单个字符串创建R数据帧 - Create R dataframe from single string containing elements and whitespace 根据其他3列的结果在R数据框中创建新列 - Create new column in R dataframe based on results from 3 other columns 从 R 中的现有列在空间数据框中创建一个新列 - Create a new column in a spatial dataframe from existing columns in R
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM