在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.
答案 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
会更容易处理。