我正在尝试使用R转换我的数据框格式。我想要唯一的公司名称,因为它对每个公司都有多个观察结果。我的数据看起来像
company name Values Year
A 1 2010
A 2 2011
B 4 2010
B 6 2012
C 8 2011
我想要格式
company name first_value First_year second_values second_year
A 1 2010 2 2011
B 4 2010 6 2012
C 8 2011 NA NA
我已经尝试过这段代码,但它没有给出我期待的结果
library(plyr)
extract.hashtags <- function(x) {
x <- subset(x,select=c(-Company.Name))
mat <- as.matrix(x)
dim(mat) <- c(1,length(mat))
as.data.frame(mat)
}
df1 = ddply(data, .(Company.Name), extract.hashtags )
答案 0 :(得分:6)
使用devel version of data.table
(v 1.9.5 +)
library(data.table) ## v 1.9.5+
dcast(setDT(df)[, indx := 1:.N, by = company_name],
company_name ~ indx, value.var = c("Values", "Year"))
# c ompany_name Values_1 Values_2 Year_1 Year_2
# 1: A 1 2 2010 2011
# 2: B 4 6 2010 2012
# 3: C 8 NA 2011 NA
这个想法是为每个组添加一个计数器,然后根据该计数器从长到大重新整形,同时将两个变量同时指定为解释的变量(目前仅在devel版本中可用)。