2013-03-13 21 views
1

我用計數(情況..)到組年齡在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 

我想這轉,並添加列標題的年齡範圍'和'數字',但據我所知,重塑功能需要標題在一開始就存在,所以我不知道如何去做這件事。非常感謝。

+2

如果您在數據框中提供了'dput'的輸出,那將會更有幫助。 – joran 2013-03-13 20:58:37

回答

0

如果你有一些連續變量年齡和你期望的切割點已知:

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

如果是像這樣的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 
+0

謝謝,那個作品 – 2013-03-14 19:30:58

1

您可能正在尋找的是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 
+0

也很好,謝謝,沒用過堆棧 – 2013-03-14 19:31:33