我以爲我確實將寬數據轉換爲long,並且我一直在使用它一段時間,但是最近我發現出了點問題。顯然,代碼是錯誤的,我似乎無法修復它。將複雜的寬數據轉換爲長R
寬泛的數據是複雜的,因爲它包含了有關何人開始他/她的第一份工作,第二份工作等的信息。我想把它變成面板數據。
因此原始數據df
如下所示:
id name gender job1 sjob1 ejob1 job2 sjob2 ejob2 job3 sjob3 ejob3
1 Jane F 100 1990 1992 103 1993 1995 104 1994 1997
2 Tom M 200 1978 1980 400 1981 1985 NA NA NA
作業號碼是工作代碼,表明某些工作,即管理,銷售等
以上是充滿了很短的版本我有數據。需要的輸出是:
id name gender year job
1 Jane F 1990 100
1 Jane F 1991 100
1 Jane F 1992 100
1 Jane F 1993 103
1 Jane F 1994 104
1 Jane F 1995 104
1 Jane F 1996 104
1 Jane F 1997 104
2 Tom M 1978 200
2 Tom M 1979 200
2 Tom M 1980 200
2 Tom M 1981 400
2 Tom M 1982 400
2 Tom M 1983 400
2 Tom M 1984 400
2 Tom M 1985 400
我對廣泛版本總共有大約1600個觀察值。 (1600人)。我試過以下,但沒有奏效:
df_long <-reshape(df,
varying=c("job1", "job2", "job3"),
v.names="job",
timevar="year",
times=c("sjob1", "sjob2", "sjob3"),
direction = "long")
這實際上成功地在sjob1,sjob2,sjob3(每個任務的起始年)的順序保留職位代碼,但沒有保存歲以下sjob1只是記錄sjob1代替:
id name gender year job
1 Jane F sjob1 100
1 Jane F sjob2 103
1 Jane F sjob3 104
2 Tom M sjob1 200
2 Tom M sjob2 400
2 Tom M sjob3 NA
以上是我的原始數據的例子,所以我想發表我的原始數據,以及:https://www.dropbox.com/s/ygbkd91ataqkwz5/origin_wide.RData
難道這是HTTP的副本://計算器。com/questions/9004399/reshape-panel-data-wide-format-to-long-format? – krlmlr
你的代碼的結果與你期望的結果有什麼不同? – krlmlr
@krlmlr我編輯了這個問題!它設法按順序放置「工作」,但沒有吐出代碼中創建的「年」變量的年份。 – song0089