2017-02-13 31 views
0
ab<- as.factor(c("A","B","A","C","B","C","C")) 
a123<- as.factor(c(NA,NA,NA,465,NA,532,456)) 
dd<- as.data.frame(cbind(ab,a123)) 

替換的NA,這是該我有,我想替換NA與0值。如果柱AB的值是A否則NA我曾嘗試下面的代碼數據幀= 1由條件

dd$Amount[is.Na(dd$Amount)]<- ifelse(my_dd$Activity=="Beneficiary Added", 0,1) 

我收到以下錯誤:

> dd$Amount[is.Na(dd$Amount)]<- ifelse(my_dd$Activity=="Beneficiary Added", 0, 1) 
Error in `*tmp*`$Amount : object of type 'closure' is not subsettable 
+0

只是做'DF < - 數據。框架(abc,a123)'作爲你的方法'as.data.frame(cbind'創建兩個「因素」列 – akrun

+0

如果你**不要在創建df時使用'as.factor'這段代碼'df $ a123 [ is.na(df $ a123)] < - ifelse(df [is.na(df $ a123),'abc'] ==「A」,0,1)''和你的'df'很好的搭配。 –

回答

0

一個答案加上data.table(在我看來更清晰的語法)的例子我的評論:

library(data.table) 

df <- data.frame(abc = c("A","B","A","C","B","C","C"), a123 = c(NA,NA,NA,465,NA,532,456)) 
dt <- data.table(df) 

# "Classic" data.frame syntax 
df$a123[is.na(df$a123)] <- ifelse(df[is.na(df$a123), 'abc'] == "A", 0, 1) 
# data.table one 
dt[is.na(a123), a123 := ifelse(abc == "A", 0, 1)] 
0

這裏是我的建議。

abc<- c("A","B","A","C","B","C","C") 
df<- data.frame(cbind(abc,a123),stringsAsFactors =FALSE) 
df$your_var=ifelse(df$abc %in% "A" & df$a123 %in% NA, 0, ifelse(df$a123 %in% NA,1,df$a123) 
print(df) 

最佳

帕夫洛

+0

非常感謝你解決了這個問題。 –

+0

@GirishKhole,你不覺得這個答案有點過於複雜嗎? –

+0

你好。其實這是味道的問題。在我的解決方案中,您使用「ifelse」和子集的組合。 – Pavlo