S******y 发帖数: 1123 | 1 I have the following data frame -
id year_mnth revenue
101 2009-01 1100
101 2009-02 1200
102 2009-02 1900
103 2009-03 2000
...
I would like to tranpose it and output
like -
id _2009_01 _2009_02 _2009_03
101 1100 1200 .
102 . 1900 .
103 . . 2000
Is there a way to do that in R?
Thanks! | s*****n 发帖数: 2174 | 2 tapply() is perfect for this purpose.
【在 S******y 的大作中提到】 : I have the following data frame - : id year_mnth revenue : 101 2009-01 1100 : 101 2009-02 1200 : 102 2009-02 1900 : 103 2009-03 2000 : ... : I would like to tranpose it and output : like - : id _2009_01 _2009_02 _2009_03
| S******y 发帖数: 1123 | 3 Thanks! songkun.
Could you be more specific by giving an example? | s*****n 发帖数: 2174 | 4 tapply(data$revenue, list(data$id, data$year_mnth), sum)
but I suggest you read the tapply manual:
?tapply
【在 S******y 的大作中提到】 : Thanks! songkun. : Could you be more specific by giving an example?
| q**j 发帖数: 10612 | 5 如果数据是字符型的你怎么用tapply?
【在 s*****n 的大作中提到】 : tapply(data$revenue, list(data$id, data$year_mnth), sum) : but I suggest you read the tapply manual: : ?tapply
| s*****n 发帖数: 2174 | 6 字符型也一样, 区别只是FUN那部分你肯定不能用什么 sum, mean 这类的函数. 但是任
何可以保持字符型的函数可以可以, 比如:
data <- data.frame(
id = c(101, 101, 102, 102),
class = c("A", "B", "B", "A"),
name = c("Tom", "Dan", "Susan", "Larry"))
tapply(data$name, list(data$id, data$class), as.character)
A B
101 "Tom" "Dan"
102 "Larry" "Susan" | S******y 发帖数: 1123 | 7 Thanks!
That blows me away. | q**j 发帖数: 10612 | 8 请问如果想将这个步骤逆向操作一下有没有这样的short cut?
【在 s*****n 的大作中提到】 : 字符型也一样, 区别只是FUN那部分你肯定不能用什么 sum, mean 这类的函数. 但是任 : 何可以保持字符型的函数可以可以, 比如: : data <- data.frame( : id = c(101, 101, 102, 102), : class = c("A", "B", "B", "A"), : name = c("Tom", "Dan", "Susan", "Larry")) : tapply(data$name, list(data$id, data$class), as.character) : A B : 101 "Tom" "Dan" : 102 "Larry" "Susan"
| s*****n 发帖数: 2174 | | q**j 发帖数: 10612 | | f*******r 发帖数: 383 | 11 您老真耐心。
【在 s*****n 的大作中提到】 : 字符型也一样, 区别只是FUN那部分你肯定不能用什么 sum, mean 这类的函数. 但是任 : 何可以保持字符型的函数可以可以, 比如: : data <- data.frame( : id = c(101, 101, 102, 102), : class = c("A", "B", "B", "A"), : name = c("Tom", "Dan", "Susan", "Larry")) : tapply(data$name, list(data$id, data$class), as.character) : A B : 101 "Tom" "Dan" : 102 "Larry" "Susan"
| s*****n 发帖数: 2174 | 12 呵呵, 是啊.
营造统计版良好气氛....
【在 f*******r 的大作中提到】 : 您老真耐心。
|
|