R dataframe使用跨/ all_of / mutate_if从现有列创建多个新列。
在R语言中,可以使用dplyr包中的mutate()函数和tidyselect包中的across()、all_of()和mutate_if()函数来从现有列创建多个新列。
- 跨(across)函数:
跨函数用于选择多个列,并对这些列应用相同的操作。它接受一个或多个列名或选择器,并返回一个可以在mutate()函数中使用的选择器。例如,如果我们有一个名为df的数据框,其中包含列A、B和C,我们可以使用跨函数将这些列相加并创建一个新列D:
library(dplyr)
df <- df %>%
mutate(across(c(A, B, C), ~ .x + 1, .names = "D_{.col}"))
上述代码将对列A、B和C中的每个元素加1,并将结果存储在新创建的列D_A、D_B和D_C中。
- all_of()函数:
all_of()函数用于在mutate()函数中引用一个或多个列名。它接受一个或多个列名,并返回一个可以在mutate()函数中使用的选择器。例如,如果我们有一个名为df的数据框,其中包含列A、B和C,我们可以使用all_of()函数将这些列相加并创建一个新列D:
library(dplyr)
df <- df %>%
mutate(D = A + B + C)
上述代码将对列A、B和C中的每个元素相加,并将结果存储在新创建的列D中。
- mutate_if()函数:
mutate_if()函数用于根据条件选择特定类型的列,并对这些列应用相同的操作。它接受一个谓词函数和一个操作函数,并返回一个可以在mutate()函数中使用的选择器。例如,如果我们有一个名为df的数据框,其中包含数值型列和字符型列,我们可以使用mutate_if()函数将数值型列中的元素加1,并将结果存储在新创建的列中:
library(dplyr)
df <- df %>%
mutate_if(is.numeric, ~ . + 1)
上述代码将对所有数值型列中的每个元素加1,并将结果存储在相应的新创建列中。
总结:
使用跨/ all_of / mutate_if函数可以方便地从现有列创建多个新列。跨函数用于选择多个列并应用相同的操作,all_of函数用于在mutate()函数中引用列名,mutate_if函数用于根据条件选择特定类型的列并应用相同的操作。这些函数可以帮助我们在R中进行数据处理和转换操作。
腾讯云相关产品和产品介绍链接地址:
- 腾讯云数据仓库 ClickHouse:https://cloud.tencent.com/product/ch
- 腾讯云弹性MapReduce EMR:https://cloud.tencent.com/product/emr
- 腾讯云云原生容器引擎 TKE:https://cloud.tencent.com/product/tke
- 腾讯云云数据库 CDB:https://cloud.tencent.com/product/cdb
- 腾讯云云服务器 CVM:https://cloud.tencent.com/product/cvm
- 腾讯云人工智能 AI:https://cloud.tencent.com/product/ai
- 腾讯云物联网 IoT Hub:https://cloud.tencent.com/product/iothub
- 腾讯云移动开发 MSDK:https://cloud.tencent.com/product/msdk
- 腾讯云对象存储 COS:https://cloud.tencent.com/product/cos
- 腾讯云区块链服务 TBC:https://cloud.tencent.com/product/tbc
- 腾讯云元宇宙服务 TUS:https://cloud.tencent.com/product/tus