簡體   English   中英

如何為每個觀察值調用變量的因子水平,並使用這些值在R中創建新變量?

[英]How to call the factor level of a variable for each observation, and use those values to create a new variable in R?

我有一個具有10個級別的分類變量hospital_code的數據集。

我正在運行的程序遍歷並獲取數據的子集,以便變量compLbl包含10個hospital_code中的2個,以便可以將它們相互比較。 我現在遇到一種情況,在每個循環中,我需要compLbl進行二進制編碼(1和0)。

如果僅從第一個循環獲取子集數據,在該循環中compLbl的可能值為AMHBJH ,則可以輕松地執行以下操作:

nData$compLbl2 = with(nData,(ifelse(compLbl == "AMH", 1,0)))

並獲取如下所示的數據:

head(nData)
compLbl outLbl Race_Code Age Complexity_Subclass_Code compLbl2
1     AMH      0         W  63                        1        1
2     AMH      0         W  44                        2        1
3     AMH      0         W  88                        3        1
4     BHC      0         W  64                        1        0
5     BHC      0         W  61                        2        0
6     BHC      0         W  61                        1        0

我該如何概括一下,以便無論compLbl有兩個值,它都將對其進行二進制編碼? 我的想法是可能通過參考因子級別1來獲取因子變量compLbl中存在的兩個值。 像這樣:

nData$compLbl2 = with(nData,(ifelse(FACTORLEVEL(compLbl) == 1, 1,0)))

在我上面的示例中, FACTORLEVEL(compLbl)對於AMH將返回1,對於BHC將返回2,因為這是R將自動分配的因子水平。 但是,我不確定如何執行此操作,或者是否可行。

我將使用以下命令:

nData <- within(nData, compLbl2 = rev(as.numeric(compLbl[drop = TRUE]) -1))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM