1
之前元素data.frame專欄中,我問這個問題:Moving certain elements of data frame into new columns (in R)創建具有取決於其他兩列(以R)
現在,我有相同的數據幀:
> jiz <- data.frame(Type=c("X","B","B","B","B","X","B"),
+ Action=c("both","1","2","2","1","both","1"))
> jiz
Type Action
1 X both
2 B 1
3 B 2
4 B 2
5 B 1
6 X both
7 B 1
我想構造一個取決於「類型」和「動作」兩列中的值的新列,稱爲「結果」,具有三個值「X」,「Y」和「Z」。
如果數據類型爲 'X' 和行動是 '兩者' - > 「結果」 是X
如果數據類型爲 'B' 和行動是 '1' - > 「結果」 爲Y
如果數據類型爲 'B' 和動作是 '2' - > 「結果」 是Z,
,使得新的數據幀變爲:
> jiz.new
Type Action Result
1 X both X
2 B 1 Y
3 B 2 Z
4 B 2 Z
5 B 1 Y
6 X both X
7 B 1 Y
變換+ ifelse,從交我鏈接到上面,在這裏不適合我,因爲我有更多的t wo組合進入/創建相同的新列。
或者,如果你不想使用data.table,使用jiz $結果<-sapply(jiz $類型,conditionalResult,argaction = jiz $行動) – annndrey
非常感謝你,@annndrey – Erosennin
使用數據幀的方法,這是我想要的,我得到這個: {> jiz $ Result <-sapply(jiz $ Type,conditionalResult,argaction = jiz $ Action) 有17個警告(使用警告()看到它們) >警告() 警告消息: 1:在if(argtype ==「X」&argaction ==「both」)return(「X」): 條件長度> 1且僅使用第一個元素 2:In if(argtype ==「X」&argaction ==「both」)return(「X」): th e條件的長度> 1,只有第一個元素將被使用} – Erosennin