请先帮我解决一下这个问题。 要指出的是,我不知道我需要的正确的R术语。是"加入"一个正确的词?
set.seed(0)
df <- data.frame(a = sample(c(T,F), 10, replace=TRUE),
b = sample(c(T,F), 10, replace=TRUE),
c = sample(c(T,F), 10, replace=TRUE),
d = sample(c(T,F), 10, replace=TRUE))
a <- addmargins(table(df$a))
b <- addmargins(table(df$b))
c <- addmargins(table(df$c))
d <- addmargins(table(df$d))
这是数据
FALSE TRUE Sum
7 3 10
FALSE TRUE Sum
4 6 10
FALSE TRUE Sum
4 6 10
FALSE TRUE Sum
5 5 10
我想要的是使数据看起来像这样
FALSE TRUE Sum
a 7 3 10
b 4 6 10
c 4 6 10
d 5 5 10
听起来很简单,不是吗?我过去使用的是ddply
。但我不知道如何使用ddply
或其他任何内容。
答案 0 :(得分:4)
这是一个简单的单行执行表命令,然后添加边距:
addmargins(t(sapply(df, table)))
#or this for just the row sums:
addmargins(t(sapply(df, table)), 2)
sapply
将table
函数应用于每列
t
转换结果
{/ 1}}表示行/列总和
答案 1 :(得分:3)
这只是堆叠行,您需要rbind
(对于&#34;绑定&#34;行在一起。cbind
是列的等价物。)
rbind(a, b, c, d)
# FALSE TRUE Sum
# a 7 3 10
# b 4 6 10
# c 4 6 10
# d 5 5 10
join 通常在您有一些共享列但有一些不同的列时完成,并且您希望组合数据以使共享列对齐,并保留不同的相应不同列。例如,如果您有一个人员和地址的数据框,以及人员和订单的另一个数据框,您可以将它们连接在一起,以查看哪个地址与哪个订单一致。在基础R中,使用merge
命令完成连接。