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

时间:2019-04-15 22:40:38

标签: r dataframe mutate

在R中,我试图根据另一列的值更新数据帧中的一列

因此数据框是2列,第一列s / b是数字,第二列是日期。对于3个特定日期,我需要将“考试”列更新为某个值。数据框如下所示:

Exams  Year
NA     2009-12-01
NA     2010-01-01
NA     2010-02-01

我想将这3个日期的NA更改为特定值

我已经尝试过了:

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.

1 个答案:

答案 0 :(得分:0)

使用undefined方法的(至少)两个选项。请注意,这里我假设您的var userinf = new Discord.RichEmbed() .setAuthor(message.author.username, message.author.avatarURL) .setThumbnail(message.author.avatarURL) .setDescription("Guild: " + message.guild) .setColor(0x333333) .addField("Full Username: ", `${message.author.username}#${message.author.discriminator}`, true) .addField("ID:", message.author.id, true) .addField('Current Nickname: ', message.author.toString(), true) .addField("Current Status: ", status[message.author.presence.status], true) .addField("Currently Playing: ", message.author.presence.game || "Nothing", true) .addField("Joined On: ", message.author.joinedAt, true) .addField("Account Type: ", bot[message.author.bot], true) .addField("Created On: ", newDate, true) .setFooter("Created by Brickman#4669", client.user.avatarURL) 变量是一个字符向量。第一个选项使用dplyr语句:

Year

ifelse带有一个test子句和两个返回条件(分别用于该子句是否满足)。如果您只有一个测试条件,那是一个简单的解决方案。如果必须将其中的许多字符串串在一起,则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 会更容易处理。