簡體   English   中英

使用dplyr將所有列突變為具有特定列標題的數字

[英]Mutate all columns to numeric with specific column headers using dplyr

我有一個帶有一列列的數據框。 有些列以_id結尾。 例如,food_id,drink_id。 我想將所有以“ _id”結尾的列中的數據從“因子”轉換為數值。 我將如何在dplyr中這樣做?

我們可以使用mutate_at

library(dplyr)
library(magrittr)
df1 %<>%
   mutate_at(vars(ends_with("_id")), funs(as.numeric(as.character(.))))

如果我們要選擇特定的“ id”列

df2 %<>% 
  mutate_at(vars(matches("^(food|drink).*_id")), funs(as.numeric(as.character(.))))

或反向邏輯

df2 %<>% 
  mutate_at(vars(ends_with("_id"), -matches("^(snack|dessert).*_id")),
                funs(as.numeric(as.character(.))))

或者使用grep創建列索引,然后在mutate_at使用該mutate_at

i1 <- !grepl("^(snack|dessert).*_id$", names(df2)) & grepl("_id$", names(df2))
df2 %<>%
     mutate_at(vars(which(i1)), funs(as.numeric(as.character(.)))) 

數據

set.seed(24)
df1 <- data.frame(food_id = factor(1:5), drink_id = factor(6:10), value = rnorm(5))


df2 <- data.frame(food_id = factor(1:5), drink_id = factor(6:10), value = LETTERS[1:5],
snack_id = factor(1:5),  dessert_id = factor(11:15))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM