簡體   English   中英

如何在R中的數據框中使用mutate根據第二列的值更新列

[英]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.

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