簡體   English   中英

R:將3個變量合並為1個變量

[英]R: Combining 3 variables into 1 variable

我下載了一個大型數據集,其中要求調查參與者(用住戶ID標記)提供相同的信息,但被要求為“問題1”,“問題2”或“問題3”。 數據集以3個不同的變量給出其結果。

這是我的三個變量:pctstocks_1 pctstocks_2 pctstocks_3

調查參與者中隨機在所有三個變量,它是喜歡與家庭ID 1-1000的人都在第一變量; 家庭ID 1001-2000位於第二個變量中,依此類推。它們混在一起,有一些調查參與者根本沒有被問到這個問題。

我只想將它們全部放入一個變量中,例如“ pctstocks”,因此我可以將pctstocks作為因變量(“ Y”)進行回歸

我已經看到許多有關合並以創建新數據框的事情。 我認為我不需要/不需要一個新的數據框架,我只想創建一個新變量並將其添加到數據框架中。

感謝您的任何幫助! 編輯:很抱歉在原始帖子中不夠清楚,我想如果我把問題弄得太久了,沒人會想讀。 這是我正在使用的較大數據集的子集

> regdata <- data.frame(HHID, Risk_Pct, pctstocks_1, pctstocks_2, pctstocks_3, Stocks_Pct, age, gender, Own_Home, Marital_Status, current_job_status,Total_Wealth,stock_market_expectations )

我應該澄清一下,pctstocks_1,pctstocks_2和pctstocks_3實際上不是整數,盡管它們聽起來像是整數。 參與者最初給出了一個數字答案,但隨后將其分為以下四個類別之一:“低”,“某些”,“高”或“實質”

根據要求,這是head()函數: head()函數輸出

當我嘗試使用tidyr中的“ unite”函數時,由於將變量分成多個類別,因此它們具有標簽並且不再是整數,因此無法正常工作(給出的確切錯誤消息:錯誤:所有select()輸入必須解析為整數列職位。)

這是我在ifelse上嘗試使用rosscova的方法時發生的情況:

> regdata$group <- ifelse( !is.na( pctstocks_1 ), 1L, ifelse(  !is.na( pctstocks_2 ), 2L, ifelse( !is.na( pctstocks_3 ), 3L, NA ) ) )
> 
> regdata$group<-max(c(pctstocks_1, pctstocks_2, pctstocks_3), na.rm = TRUE)
> describe(regdata$group)
regdata$group 
      n missing  unique    Info    Mean 
  16000       0       1       0     999 
> summary(regdata$group)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    999     999     999     999     999     999 

所以我認為有些問題,這僅適用於整數嗎?

第二編輯:Kunal Puri:3個pctstock變量中的每一個基本上都是相同的問題,但是由於被問為第一個,第二個或第三個問題,因此每個參與者的回答只放入了三個變量中的一個。 因此,每個參與者僅出現在變量之一中,而對其他兩個變量具有NA響應。 我要這樣做,以便有一個變量記錄所有參與者的響應,而不是有3個不完整的變量

您確實想要兩個新變量,一個用於組號,另一個用於響應。 您可以先創建組變量(假設空單元格為NA):

table$group <- ifelse( !is.na( table$pcstocks_1 ), 1L, ifelse(  !is.na( table$pcstocks_2 ), 2L, ifelse( !is.na( table$pcstocks_3 ), 3L, NA ) ) )

然后將響應值移到您的單個“ Y”列。 有幾種方法可以做到這一點,其中最好的方法取決於您的數據。 我認為max應該非常健壯:

table$response <- max( c( table$pcstocks_1, table$pcstocks_2, table$pcstocks_3 ), na.rm = TRUE )

滿足您的需求嗎?

暫無
暫無

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

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