![](/img/trans.png)
[英]List the names and row numbers of missing data in a data.frame in R?
[英]How to change the row names in R data.frame?
我想將 DF 中的站重命名為DA056
到Happy
和AB786
到Sad
。
library(tidyverse)
DF1 <- data.frame(Station = rep("DA056",3), Level = 100:102)
DF2 <- data.frame(Station = rep("AB786",3), Level = 201:203)
DF <- bind_rows(DF1,DF2)
我們可以使用帶有為相應levels
指定的labels
的factor
library(dplyr)
DF <- DF %>%
mutate(Station = factor(Station, levels = c("DA056", "AB786"),
labels = c("Happy", "Sad")))
DF$Station
#[1] Happy Happy Happy Sad Sad Sad
#Levels: Happy Sad
或recode
DF %>%
mutate(Station = recode(Station, DA056 = 'Happy', AB786 = 'Sad'))
# Station Level
#1 Happy 100
#2 Happy 101
#3 Happy 102
#4 Sad 201
#5 Sad 202
#6 Sad 203
如果要更改的值很多,更好的選擇是在創建 key/val 數據集后進行連接
keyval <- data.frame(Station = c("DA056", "AB786"),
val = c("Happy", "Sad"), stringsAsFactors = FALSE)
DF %>%
left_join(keyval) %>%
mutate(Station = coalesce(val, Station))
或與base R
DF$Station <- with(df, factor(Station, levels = c("DA056", "AB786"),
labels = c("Happy", "Sad")))
一個選項是使用dplyr::case_when
:
library(dplyr)
DF1 <- data.frame(Station = rep("DA056",3), Level = 100:102, stringsAsFactors = F)
DF2 <- data.frame(Station = rep("AB786",3), Level = 201:203, stringsAsFactors = F)
DF <- bind_rows(DF1,DF2)
DF <- DF %>% mutate(Station = case_when( Station == "DA056" ~ "Happy",
Station == "AB786" ~ "Sad",
TRUE ~ Station))
Output
> DF
Station Level
1 Happy 100
2 Happy 101
3 Happy 102
4 Sad 201
5 Sad 202
6 Sad 203
您可以使用case_when:
DF %>%
mutate(Station = case_when(Station == "DA056" ~ "Happy", Station =="AB786" ~ "Sad"))
另一個簡單的解決方案
DF$Station = ifelse(DF$Station == "DA056", "Happy", "Sad")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.