2017-08-15 82 views
2

我有一个数据集,在R中给出如下。我试图更新描述列中值为0的值为空的单元格。根据R中另一列中的行更新列的行

Criteria  Value Description 
Success  0          
Success  21  look up 
Success  20  repeat 
Success  19  What is this 
Success  18  Transition 
Success  17  Program 
Success  0    

我希望有任何帮助来解决这个问题。下面,我试图让输出给定:

Criteria  Value Description 
Success  0  TEST        
Success  21  look up 
Success  20  repeat 
Success  19  What is this 
Success  18  Transition 
Success  17  Program 
Success  0  TEST 

感谢,

+1

你想填写什么?还提供'dput(yourdataframe)'的输出。请阅读[如何在R中创建一个很好的重现示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)来提高您的问题的质量。 – Masoud

+3

mydf $简介[mydf $ Value == 0] < - “TEST” –

+0

@Masoud:感谢您分享此链接。这是一篇好文章;将采取输入和重构我的问题是可重复的。 – Sree

回答

1

有几种选择:

基的R - 选项1

mydf$Description[mydf$Value == 0] <- "TEST" 

基的R - 选项2

mydf$Description <- if.else(mydf$Value == 0, "TEST", mydf$Description) 

dplyr - if_else()

library("dplyr") 
mydf <- mydf %>% mutate(Description = if_else(Value == 0, "TEST", Description)) 

dplyr - case_when()

有用时要评估了大量的if语句需要。

library("dplyr") 
mydf <- mydf %>% mutate(
    Description = case_when(
    Value == 0 ~ "TEST", 
    TRUE ~ Description 
    ) 
) 
+0

非常感谢许多。我在描述中遇到了一些问题,因为它们是我的情况中的“因素”。必须在使用前将它们转换为字符。欣赏您的多种解决方案。 – Sree

1

可以使用一个ifelse()语句。

假设您的数据框被称为“数据集”,您可以使用ifelse()语句来检查Value列是否为0.如果它是0,它将在Description列中输入值“TEST”。如果它不是0(else),那么它只会输入列中已经存在的值。

dataset$Description <- ifelse(dataset$Value == 0, 
           "TEST" , 
           dataset$Description) 
+0

'ifelse'安静无效,可能试试'dataset $ Description [dataset $ Value == 0] ='Test'或'dataset $ Description [dataset $ Value%in%0] ='Test'' – Wen

相关问题