根据R中具有已修改名称的先前列的值创建多个新列

梅尔贝兹

我有一个如下所示的数据框,但具有更多的列和行。

dog_c  cat_c  cheese_c  hat_c 
3      4      3         2
3      1      2         5
5      2      1         4 

我想创建一个如下所示的数据框。我想对原始数据帧中给定列中的所有值求平方,然后创建一个与原始列相同但在末尾带有2的列名。然后,我想将其附加到原始数据框。

dog_c  cat_c  cheese_c  hat_c  dog_c2  cat_c2  cheese_c2  hat_c2 
3      4      3         2      9       16      9          4
3      1      2         5      9       1       2          5
5      2      1         4      25      4       1          16

我知道我可以通过以下方式对每个新列进行此操作。

df$dog_c2 <- (df$dog_c)^2

有人对我如何更有效地做到这一点有建议吗?

罗纳克·沙

您也可以直接对数据框执行相同的操作:

df[paste0(names(df), 2)] <- df^2
df

#  dog_c cat_c cheese_c hat_c dog_c2 cat_c2 cheese_c2 hat_c2
#1     3     4        3     2      9     16         9      4
#2     3     1        2     5      9      1         4     25
#3     5     2        1     4     25      4         1     16

如果您想在中执行此操作dplyr,则可以使用mutate_all

library(dplyr)
df %>% mutate_all(list(`2` = ~. ^2))

如果只想对选定的列执行此操作,则可以执行以下操作:

cols <- c('dog_c','cat_c') #Use regex if there are lot of columns.
df[paste0(cols, 2)] <- df[cols]^2

#  dog_c cat_c cheese_c hat_c dog_c2 cat_c2
#1     3     4        3     2      9     16
#2     3     1        2     5      9      1
#3     5     2        1     4     25      4

mutate_atdplyr

df %>% mutate_at(cols, list(`2` = ~.^2))

数据

df <- structure(list(dog_c = c(3L, 3L, 5L), cat_c = c(4L, 1L, 2L), 
cheese_c = 3:1, hat_c = c(2L, 5L, 4L)), class = "data.frame", 
row.names = c(NA, -3L))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫:根据现有列中的值创建新列

如何添加具有NA作为R中先前列的行?

在R中重塑数据-根据现有列中的值创建新列

根据另一列从多个列中创建具有唯一名称的列表?

根据两列中的值在R中创建新列

使用for循环(或apply-type函数)在R中的先前定义的向量中创建具有特定名称的新列

根据多个列中的值创建新的数据框列

根据一组先前的列创建多个新列(更有效)

根据R中的多个列值创建值序列

在R中的for循环中创建具有更改名称的多个函数

R:根据具有多个列的条件添加新列

根据单元格中的值创建具有多个输入项的新列表

根据先前列中的最新值在数据框中创建新列

Awk:根据当前列值创建列

SQL在新列中创建具有先前日期的新列

Redux先前状态已具有新状态值

如何根据输入变量在 r 中创建多个具有单独名称的数据框

R函数根据同一列中的先前值创建新列

根据 r 中特定行上方和下方的值构建具有值的新列

如何根据另一列 SQL 中的值创建具有计数值的新列

在 R 中创建具有新名称的新列的数量

根据具有多个值的其他列中的值创建新列

根据现有列中的值创建新列

如何根据值创建具有状态的新列

如果列值具有多个值,则在数据框中创建新记录

Pandas - 根据其他列的名称创建具有值的新列

如何在 sql bigquery 中将数据重塑为具有先前列值的新列?

在 r 的新列中创建一个具有唯一值总计的新列

根据其他列创建一个具有值的新列 - 在 R 中