R循环通过数据表与dcast的组合求和

R循环通过数据表与dcast的组合求和,r,R,我有一个类似的表,有更多的列。我试图做的是创建一个新表,显示每个ID、每种类型的计数数和每种类型的值 df 我可以使用 dcast(df[,j=list(sum(Counts,na.rm = TRUE)),by = c("ID","Type")],ID ~ paste(Type,"Counts",sep="_")) 但是,我希望使用循环遍历数据表中的每一列。但是没有成功,它总是把所有的行加起来。我试着用 sum(df[[i]],na.rm = TRUE) sum(names(df)[[i]]

我有一个类似的表,有更多的列。我试图做的是创建一个新表,显示每个ID、每种类型的计数数和每种类型的值

df

我可以使用

dcast(df[,j=list(sum(Counts,na.rm = TRUE)),by = c("ID","Type")],ID ~ paste(Type,"Counts",sep="_"))
但是,我希望使用循环遍历数据表中的每一列。但是没有成功,它总是把所有的行加起来。我试着用

sum(df[[i]],na.rm = TRUE)
sum(names(df)[[i]] == "",na.rm = TRUE)
sum(df[[names(df)[i]]],na.rm = TRUE)
j = list(apply(df[,c(3:4),with=FALSE],2,function(x) sum(x,na.rm = TRUE)
我想要一张像这样的新桌子

ID   A_Counts  B_Counts  A_Value   B_Value
1         1      2          5           4
2         5      3          5           6 

我自己的表有更多的列,但想法是一样的。我是不是把它复杂化了,还是有一个我不知道的简单把戏?请帮帮我。谢谢大家!

您必须先
融化
您的数据,然后
dcast
它:

library(reshape2)
df2 <- melt(df,id.vars = c("ID","Type"))
#    ID Type variable value
# 1   1    A   Counts     1
# 2   1    B   Counts     2
# 3   2    A   Counts     2
# 4   2    A   Counts     3
# 5   2    B   Counts     1
# 6   2    B   Counts     2
# 7   1    A    Value     5
# 8   1    B    Value     4
# 9   2    A    Value     1
# 10  2    A    Value     4
# 11  2    B    Value     3
# 12  2    B    Value     3
dcast(df2,ID ~ Type + variable,fun.aggregate=sum)

#   ID A_Counts A_Value B_Counts B_Value
# 1  1        1       5        2       4
# 2  2        5       5        3       6
library(重塑2)

df2您必须先
融化
您的数据,然后
dcast
它:

library(reshape2)
df2 <- melt(df,id.vars = c("ID","Type"))
#    ID Type variable value
# 1   1    A   Counts     1
# 2   1    B   Counts     2
# 3   2    A   Counts     2
# 4   2    A   Counts     3
# 5   2    B   Counts     1
# 6   2    B   Counts     2
# 7   1    A    Value     5
# 8   1    B    Value     4
# 9   2    A    Value     1
# 10  2    A    Value     4
# 11  2    B    Value     3
# 12  2    B    Value     3
dcast(df2,ID ~ Type + variable,fun.aggregate=sum)

#   ID A_Counts A_Value B_Counts B_Value
# 1  1        1       5        2       4
# 2  2        5       5        3       6
library(重塑2)

df2示例数据集的输出是什么?请更新我想要的输出。谢谢你的链接你好,谢谢你的链接。我没有在网上做足够的研究来找到这个链接。没关系,很高兴它能帮上忙。你对样本数据集的输出是什么?请更新我想要的输出。谢谢你的链接你好,谢谢你的链接。我没有在网上做足够的研究来找到这个链接。没关系,很高兴它对我有帮助。非常感谢你!它简单有效。我有太多的需要学习了。非常感谢你!它简单有效。我还有很多东西要学
df3 <- aggregate(cbind(Counts,Value) ~ ID + Type,df,sum)
#   ID Type Counts Value
# 1  1    A      1     5
# 2  2    A      5     5
# 3  1    B      2     4
# 4  2    B      3     6

reshape(df3, idvar='ID', timevar='Type',direction="wide")
#   ID Counts.A Value.A Counts.B Value.B
# 1  1        1       5        2       4
# 2  2        5       5        3       6
df <- read.table(text ="ID   Type  Counts  Value
1     A     1       5
1     B     2       4
2     A     2       1
2     A     3       4
2     B     1       3
2     B     2       3",stringsAsFactors=FALSE,header=TRUE)