我是R的新手,我想这应该很容易。我有一个大数据,对于每个时期的每个组,可能有两个或三个变量来估计。数据如下所示:
for(i=0; i<high; i++)
{
for(j=0; j<width; j++)
{
if(Img->imx[i*width+j]==0)
{
c=c+1;
}
}
现在我需要在每一组的每一轮中将所有信息汇总到一行。它需要的方式是行遍布列,提及它们的估计是否存在,如果不存在则为NaN。它看起来像这样:
df <- data.frame(
group = c(1, 1, 1, 1, 1),
period = c(1, 1, 1, 2, 2),
term = c("Inv", "Not", "Clue", "Mix", "Clue"),
estimate = c(-1.2, -.85, -.35, -1, -.6),
pvalue = c(.001, .01, .00001, .0001, 001)
)
group period term estimate pvalue
1 1 1 Inv -1.20 1e-03
2 1 1 Not -0.85 1e-02
3 1 1 Clue -0.35 1e-05
4 1 2 Mix -1.00 1e-04
5 1 2 Clue -0.60 1e+00
有一种简单的方法吗?
答案 0 :(得分:2)
除了dplyr
方法之外,我们还可以使用dcast
中的data.table
,value.var
可以使用多个setDT(df)
列。我们转换了&#39; data.frame&#39;到&#39; data.table&#39; (dcast
)并使用library(data.table)
dcast(setDT(df), group+period~term,
value.var= c("estimate", "pvalue"), sep=".")
# group period estimate.Clue estimate.Inv estimate.Mix estimate.Not pvalue.Clue pvalue.Inv pvalue.Mix pvalue.Not
#1: 1 1 -0.35 -1.2 NA -0.85 0.00001 0.001 NA 0.01
#2: 1 2 -0.60 NA -1 NA 1.00000 NA 0.0001 NA
转换为&#39; long&#39;广泛的&#39;格式。
Notification notification = new Notification.Builder(context)
.setAutoCancel(true)
.setContentTitle("title")
.setContentText("message")
.setWhen(System.currentTimeMillis())
.setSmallIcon(getNotificationIcon())
.build();
private static int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.icon_loli : R.drawable.ic_launcher;
}
答案 1 :(得分:1)
您可以使用dplyr和tidyr包。首先,我使用gather()
将数据放入长格式。您在一列中具有估计值和p值。您还在一列中有两个变量名称,我将其命名为foo
。然后,我使用mutate()
创建了您指定的列名。我删除了术语和foo,因为它们不再是必需的。最后,我使用spread()
将数据重新整形为宽格式。
library(dplyr)
library(tidyr)
gather(df, foo, value, -c(group, period, term)) %>%
mutate(whatever = paste(term, foo, sep = ".")) %>%
select(-term, -foo) %>%
spread(whatever, value)
group period Clue.estimate Clue.pvalue Inv.estimate Inv.pvalue Mix.estimate Mix.pvalue Not.estimate
1 1 1 -0.35 1e-05 -1.2 0.001 NA NA -0.85
2 1 2 -0.60 1e+00 NA NA -1 1e-04 NA
Not.pvalue
1 0.01
2 NA