[英]How do I use mutate in a data frame in R to update column based on value of a second column
在RI中,我試圖根據另一列的值更新數據框中的一列
所以數據幀是2列第1列s / ba號,第二列是日期。 對於3個特定日期,我需要將考試列更新為特定值。 數據框看起來像這樣:
Exams Year
NA 2009-12-01
NA 2010-01-01
NA 2010-02-01
我想將NA更改為這3個日期的特定值
我試過這個:
library(dplyr)
ABVILE %>%
mutate(Exams=replace(Exams, Year==2009-12-01, 1709.67)) %>%
as.data.frame()
並嘗試將我需要的值更新為一個變量,但它不會以任何方式進行更新,我也不會收到錯誤。
我希望它是這樣的:
1709.67 2009-12-01
但我明白了:
NA 2009-12-01.
使用dplyr
方法有(至少)兩個選項。 請注意,這里我假設您的Year
變量是一個字符向量。 第一個選項使用ifelse
語句:
ABVILE %>%
mutate(Exams = ifelse(Year == "2009-12-01", 1709.67, Exams)) %>%
data.frame
ifelse
接受一個測試子句和兩個返回條件(如果該子句分別滿足或不滿足)。 如果您只有一個測試條件,這是一個簡單的解決方案。 如果你必須把它們中的許多串在一起,那么dply
提供了一個很好的函數叫做case_when
。 這是什么樣子:
ABVILE %>%
mutate(Exams = case_when(Year == "2009-12-01" ~ 1709.67,
Year == "2010-01-01" ~ 999.999)) %>%
data.frame
這相當於
ABVILE %>%
mutate(Exams = ifelse(Year == "2009-12-01", 1709.67,
ifelse(Year == "2010-01-01", 999.999, NA))) %>%
data.frame
如果你有很多測試條件/作業,顯然case_when
會更容易處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.