Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按ID显示一行上的数据_R - Fatal编程技术网

R 按ID显示一行上的数据

R 按ID显示一行上的数据,r,R,我有一个数据框,其中有一个id列和几个其他列,它们按对分组,我试图将同一id的所有数据放在一行上。ID的每次出现次数不相同 我的数据如下所示: df <- data.frame(id=sample(1:4, 12, T), vpcc1=1:12, hpcc1=rnorm(12), vpcc2=1:12, hpcc2=rnorm(12), vpcc3=1:12, hpcc3=rnorm(12)) df ## id vpcc1 hpcc1 vpcc2 hpcc2

我有一个数据框,其中有一个id列和几个其他列,它们按对分组,我试图将同一id的所有数据放在一行上。ID的每次出现次数不相同

我的数据如下所示:

df <- data.frame(id=sample(1:4, 12, T), vpcc1=1:12, hpcc1=rnorm(12), vpcc2=1:12, hpcc2=rnorm(12), vpcc3=1:12, hpcc3=rnorm(12))
df
##    id vpcc1       hpcc1 vpcc2       hpcc2 vpcc3       hpcc3
## 1   1     1  0.04632267     1 -0.37404379     1  0.90711353
## 2   4     2  0.50383152     2  0.06075954     2  0.30690284
## 3   1     3  1.52450117     3 -1.21539925     3 -1.12411614
## 4   1     4 -0.50624871     4 -0.75988364     4 -0.47970608
## 5   3     5  1.64610863     5  0.03445275     5 -0.18895338
## 6   1     6  0.22019099     6 -0.32101883     6  1.29375822
## 7   2     7 -0.10041807     7 -0.17351799     7 -0.03767921
## 8   2     8  0.81683565     8  0.62449158     8  0.50474787
## 9   2     9 -0.46891269     9  1.07743469     9 -0.55539149
## 10  1    10  0.69736549    10 -0.08573679    10  0.28025325
## 11  3    11  0.73354215    11  0.80676315    11 -1.12561358
## 12  2    12 -0.40903143    12  1.94155313    12  0.64231119
df当您说“同一行”时,是否有必要将输出与您的尝试中的输出相同,或者您是否对以下内容感到满意:

x <- aggregate(df[2:ncol(df)],list(df$id),list)
并使用列表表示法引用vpcc和hpcc的不同值:

x$vpcc1
#$`0`
#[1]  9 10

#$`1`
#[1] 1 3 7

#$`2`
#[1] 5 6

#$`3`
#[1]  2  4  8 11 12

x$vpcc1[[1]]
#[1]  9 10

在您的示例中,变量
vpcc1
vpcc2
等是冗余的,因为它们都具有相同的值。因此,您可以将数据集转换为更经济的结构:

df <- data.frame(id=sample(1:4, 12, T), vpcc=1:12, hpcc1=rnorm(12),
                 hpcc2=rnorm(12),hpcc3=rnorm(12))

编辑

如果
vpccX
发生变化,那么这可能会满足您的需要

df <- data.frame(id=sample(1:4, 12, T), vpcc1=1:12, hpcc1=rnorm(12), vpcc2=1:12,
                 hpcc2=rnorm(12), vpcc3=1:12, hpcc3=rnorm(12))
df$time = ave(df$id, df$id, FUN = function(x) 1:length(x))
reshape(df, idvar = "id", direction = "wide", timevar = "time")

df-Thx用于应答,no用于real-vpccX没有相同的值,它们是date,但我将尝试使用索引。好的,这不清楚。检查我的更新建议,也许它对你有用。我希望输出结果与我尝试的一样,但我会看看你的解决方案。谢谢!
df <- data.frame(id=sample(1:4, 12, T), vpcc=1:12, hpcc1=rnorm(12),
                 hpcc2=rnorm(12),hpcc3=rnorm(12))
reshape(df, idvar = "id", direction = "wide", timevar = "vpcc")
df <- data.frame(id=sample(1:4, 12, T), vpcc1=1:12, hpcc1=rnorm(12), vpcc2=1:12,
                 hpcc2=rnorm(12), vpcc3=1:12, hpcc3=rnorm(12))
df$time = ave(df$id, df$id, FUN = function(x) 1:length(x))
reshape(df, idvar = "id", direction = "wide", timevar = "time")