R 如果第2列为真,则将计算从第1列复制到第3列
我有一个数据集,如下所示R 如果第2列为真,则将计算从第1列复制到第3列,r,if-statement,dplyr,R,If Statement,Dplyr,我有一个数据集,如下所示 Id Name Description Status 1 Kyla DataMining Yes 2 Kim MonteCarlo Methods No 3 Kanye Meta-Analysis May Be 4 Bruce Optimization Yes 我试图创建第四列结果,
Id Name Description Status
1 Kyla DataMining Yes
2 Kim MonteCarlo Methods No
3 Kanye Meta-Analysis May Be
4 Bruce Optimization Yes
我试图创建第四列结果,如果Status==Yes,则将存储Description列中的值,如果Status==No或可能是,则它将只从状态复制值(不)或可能是。最终的数据集应该如下所示
Id Name Description Status Result
1 Kyla DataMining Yes DataMining
2 Kim MonteCarlo Methods No No
3 Kanye Meta-Analysis May Be May Be
4 Bruce Optimization Yes Optimization
到目前为止,我已经厌倦了用ifelse做这个了
data1$Result <- ifelse(data1$Status == "Yes", data1$Description, data1$Status)
data1$Result这是因为变量Description
和Status
存储为因子。您可以使用str(data1)
看到这一点。首先尝试使用as.character()
将其转换为字符
data1$status我觉得你的行是对的。提供您的数据集和您获得的结果。这更像是猜测,但如果描述和状态变量存储为因子,您可能会出现奇怪的行为。因为我很难预测这些问题何时会发生,所以我习惯于确保字符串数据存储为character(而不是factor)类。如果首先指定data$Description=as.character(data$Description)和data$Status=as.character(data$Status),结果是否会改善?@nicola,每次我执行dput(head(mydataset))时,我都会看到5个以上的观察结果,这就是我无法粘贴实际结果的原因dataset@MarkTPatterson,事情就是这样。把它们改成character就行了:)你也可以匹配因子级别,而不需要转换成character,我认为你是对的。我没有读过我看到了一些完全不相关的数字?
@Metric,而且你们都是对的,这是该死的因素,从一个因素到另一个角色的变化起了作用:)
data1$Status<-as.character(data1$Status)
data1$Description<-as.character(data1$Description)