R 根据条件将一列中的条目替换为另一列中的条目

R 根据条件将一列中的条目替换为另一列中的条目,r,replace,dataframe,R,Replace,Dataframe,我今天有一个稍微复杂的问题。我有一个数据框(df),有三列: ID Organization org 1 Company1 company1 2 Company1 company1 3 Company2 company2 4 Company2 company1 5 Company2 NA 6 Company3 company3

我今天有一个稍微复杂的问题。我有一个数据框(df),有三列:

   ID    Organization   org
   1     Company1       company1
   2     Company1       company1
   3     Company2       company2
   4     Company2       company1
   5     Company2       NA
   6     Company3       company3
   7     Company3       demo
   8     Company4       company4
我想创建一个名为“org_corrected”的新列,条件如下:

如果“组织”和“组织”中的条目相同,则“组织已更正”必须等于“组织”中的条目

如果“组织”和“组织”中的条目不相同,且“组织”不等于“演示”和“不适用”,则组织“必须有组织条目(第一个字母大写)”

预期产出:

   ID    Organization   org          org_corrected
   1     Company1       company1     Company1
   2     Company1       company1     Company1
   3     Company2       company2     Company2
   4     Company2       company1     Company1
   5     Company2       NA           Company2
   6     Company3       company3     Company3
   7     Company3       demo         Company3
   8     Company4       company4     Company4
我可以在excel中轻松完成这项工作,但我想在R中完成这项工作


提前感谢,你们总是能解决我的问题。

我们可以使用
ifelse

df1$org_corrected <- with(df1, 
        ifelse(toupper(Organization)==toupper(org)|is.na(org)|org=='demo', 
                            Organization, org))

我有一种感觉,你会是第一个回答并解决这个问题的人,非常感谢akrun。但我的问题是,这会处理大小写不匹配的情况吗,“org”是小写而“organization”是句子吗case@user3875610这时我碰巧登录了。@user3875610我注意到
组织
组织
的第一个字母大小写不同。这是一个输入错误吗?@user3875610在这种情况下,我们可以转换为一个普通的情况,然后比较代码中添加的
toupper
。我同意逻辑,但是,运行代码后,org_corrected用数字(1,2,3,10)填充
library(rapport)
df1$org_corrected <- tocamel(df1$org_corrected, upper=TRUE)