2
[R新手有一個簡單的數據表(DT)已在幾個美國家庭(NumHH)的數量(住宅):頻率表
NumHH Residence
6 AK
4 AL
7 AR
6 AZ
1 CA
2 CO
2 CT
1 AK
4 AL
6 AR
3 AZ
1 CA
6 CO
3 CT
5 AL
通過使用(),
with(DT, table(NumHH, Residence))
我能得到一個表,是接近我想要的東西:
Residence
NumHH AK AL AR AZ CA CO CT
1 1 0 0 0 2 0 0
2 0 0 0 0 0 1 1
3 0 0 0 1 0 0 1
4 0 2 0 0 0 0 0
5 0 1 0 0 0 0 0
6 1 0 1 1 0 1 0
7 0 0 1 0 0 0 0
但我需要一個表格來提供每個住所幾個範圍的頻率。該頻率的計算是這樣的:
##Frequency of ranges per State
One <- DT$NumHH <=1 ##Only 1 person/household
Two_Four <- ((DT$NumHH <=4) - (DT$NumHH <=1)) ##2 to 4 people in Household
OverFour <- DT$NumHH >4 ##More than 4 people in HH
理想的情況下,結果是這樣的:
Residence
NumHH AK AL AR AZ CA CO CT
One 1 0 0 0 2 0 0
Two_Four 0 2 0 1 0 1 2
OverFour 1 1 2 1 0 1 0
我已經試過:
with()
- 我唯一能夠做到一個範圍與「與()」一次,如:with(DT, table (One, Residence))
- 這給了我一個FALSE行和一個真正的行狀態。data.frames
問我要命名每個州(「AK」,「AL」,「AR」等),但with()
已經知道。我也曾嘗試
ddply
,但(4列150個未標記行 - 而不是50列每個狀態所需的3個標行)獲得每個計算的列表,所以我顯然不這樣做是正確的。
任何幫助,非常感謝。
謝謝,@thelatemail。我喜歡你可以通過使用with()來保持簡單,但是,這會產生'Error in cut.default:'x'必須是數字。'作爲一個R新手,我不明白爲什麼'NumHH'可以在前面的一個變量中用()來表示數值,但是當我們把它分解爲間隔時不能。 – Uzay26
@ uzay26你的NumHH變量不是數字我猜。先用as.numeric轉換它。 – thelatemail