我在以外部值串列為條件的資料框中在 R 中創建新變數時遇到了一些麻煩:
# Sample dataframe
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
color <- c('blue', `green`, `red`)
data.frame(employee, salary, color)
#List of colors and categories
color_categories <- list( cold = c("blue", "green"), warm = c("red", "orange"))
我想在資料框中創建一個新變數,顏色類別取決于每個員工選擇的顏色,所以我想得到這樣的結果:
employee salary color category
1 John Doe 21000 blue cold
2 Peter Gynn 23400 green cold
3 Jolie Hope 26800 red warm
非常感謝!!!
uj5u.com熱心網友回復:
這是使用的解決方案tidyverse:
- 使用bind_rows您list創建一個data.frame,然后pivot_longer我們可以加入顏色。然后重命名name為category(結果pivot_longer)
library(tidyverse)
data.frame(employee, salary, color) %>%
left_join(bind_rows(color_categories) %>% pivot_longer(everything()), by = c("color" = "value")) %>%
rename(category = name)
這給了我們:
employee salary color category
1 John Doe 21000 blue cold
2 Peter Gynn 23400 green cold
3 Jolie Hope 26800 red warm
uj5u.com熱心網友回復:
不能說這比依賴包的解決方案更整潔,但這是一個解決方案base:
color_categories <- data.frame(unlist(color_categories))
colnames(color_categories) <- "color"
color_categories$category <- gsub("[0-9]", "", rownames(color_categories))
merge(df, color_categories, by = "color") # df being the sample dataframe
uj5u.com熱心網友回復:
使用 ifelse
df$category = ifelse(df$color == 'blue' | df$color == 'green' , 'cold', NA)
df$category = ifelse(df$color == 'red' | df$color == 'orange' , 'warm', df$category)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327689.html
標籤:r
上一篇:從檔案名中提取字串/數字
下一篇:在函式中使用group_by
