条件

2017-02-13 16 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)) 

でNASに置き換え、これはコードに続く、私が試してみました私は、私が列ABの値が他のNAである場合、NAは0で値置き換える必要があり、データフレーム= 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 < - データ。あなたのメソッドとしてas.data.frame(cbind'は両方の 'factor'カラムを作成します) – 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