我用計數(情況..)到組年齡在SQL和結束了以下數據框:[R移調數據框沒有列標題
0-10 11-16 17-20 21-30 31-40 41-50 51-60 61-70 over70 age_unknown
60 285 161 368 476 453 247 101 62 114
我想這轉,並添加列標題的年齡範圍'和'數字',但據我所知,重塑功能需要標題在一開始就存在,所以我不知道如何去做這件事。非常感謝。
我用計數(情況..)到組年齡在SQL和結束了以下數據框:[R移調數據框沒有列標題
0-10 11-16 17-20 21-30 31-40 41-50 51-60 61-70 over70 age_unknown
60 285 161 368 476 453 247 101 62 114
我想這轉,並添加列標題的年齡範圍'和'數字',但據我所知,重塑功能需要標題在一開始就存在,所以我不知道如何去做這件事。非常感謝。
如果你有一些連續變量年齡和你期望的切割點已知:
age <- rnorm(100,40,10)
cutpoints <- c(0,10,20,30,40,50,60,70,max(age))
fage <- table(cut(age, breaks=cutpoints))
發哥本身可以是你所需要的。但如果你真的想在一個數據幀中的數據:
df <- data.frame(age=names(fage), frequency=as.vector(fage))
如果是像這樣的1行數據幀:
df <- data.frame(matrix(c(60, 285, 161, 368, 476, 453, 247, 101, 62, 114),
nrow = 1))
names(df) <- c("0-10", "11-16", "17-20", "21-30", "31-40", "41-50",
"51-60", "61-70", "over70", "age_unknown")
df
> df
0-10 11-16 17-20 21-30 31-40 41-50 51-60 61-70 over70 age_unknown
1 60 285 161 368 476 453 247 101 62 114
然後簡單的操作將創建格式的數據幀你想:
df2 <- data.frame(age_range = names(df), number = as.numeric(df[1, ]))
df2
> df2
age_range number
1 0-10 60
2 11-16 285
3 17-20 161
4 21-30 368
5 31-40 476
6 41-50 453
7 51-60 247
8 61-70 101
9 over70 62
10 age_unknown 114
一個更簡單的方法可能是使用t()
移調df
,然後修復了結果:
df3 <- t(df)
df3 <- cbind.data.frame(rownames(df3), df3)
rownames(df3) <- NULL
names(df3) <- c("age_range","number")
df3
> df3
age_range number
1 0-10 60
2 11-16 285
3 17-20 161
4 21-30 368
5 31-40 476
6 41-50 453
7 51-60 247
8 61-70 101
9 over70 62
10 age_unknown 114
> str(df3)
'data.frame': 10 obs. of 2 variables:
$ age_range: Factor w/ 10 levels "0-10","11-16",..: 1 2 3 4 5 6 7 8 10 9
$ number : num 60 285 161 368 476 453 247 101 62 114
謝謝,那個作品 – 2013-03-14 19:30:58
您可能正在尋找的是stack
。使用Gavin的答案中的數據:
> stack(df)
values ind
1 60 0-10
2 285 11-16
3 161 17-20
4 368 21-30
5 476 31-40
6 453 41-50
7 247 51-60
8 101 61-70
9 62 over70
10 114 age_unknown
也很好,謝謝,沒用過堆棧 – 2013-03-14 19:31:33
如果您在數據框中提供了'dput'的輸出,那將會更有幫助。 – joran 2013-03-13 20:58:37