我在R需要什么样的加入?
请先帮我把这个问题弄清楚。 关键是我不知道我在这里需要的正确的R术语。“join”是正确的词吗我在R需要什么样的加入?,r,dataframe,R,Dataframe,请先帮我把这个问题弄清楚。 关键是我不知道我在这里需要的正确的R术语。“join”是正确的词吗 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 = s
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
a 7 3 10
b 4 6 10
c 4 6 10
d 5 5 10
听起来很简单,不是吗?过去我使用的是
ddply
。但我不知道如何使用ddply
或其他任何东西。这只是堆叠行,您需要rbind
(用于将行“绑定”在一起。cbind
相当于列)
当您有一些共享列但有一些不同的列,并且希望合并数据以使共享列对齐,并保留不同的对应列时,通常会执行联接。例如,如果您有一个由人员和地址组成的数据框,另一个由人员和订单组成的数据框,那么您可以将它们连接在一起,以查看哪个地址符合哪个顺序。在base R中,连接是通过
merge
命令完成的 下面是一个简单的单行程序,用于执行table命令,然后添加边距:
addmargins(t(sapply(df, table)))
#or this for just the row sums:
addmargins(t(sapply(df, table)), 2)
sapply
将表
函数应用于每一列。t
转换结果addmargins
用于行/列总和类似这样的内容:addmargins(t(sappy(df,table))
rbind(a, b, c, d)
# FALSE TRUE Sum
# a 7 3 10
# b 4 6 10
# c 4 6 10
# d 5 5 10
addmargins(t(sapply(df, table)))
#or this for just the row sums:
addmargins(t(sapply(df, table)), 2)