我有一个包含以下列的Excel文件
Column1 Column2 Column3
ab bb 0.5
ab bc 0.1
ab cd 0.7
ab dd 0.8
ac bb 0.2
ac bg 0.8
ac ee 0.8
ac dd 0.3
x <- data.frame (column1 = c("ab","ab","ab","ab","ac","ac","ac","ac"),
column2 = c("bb","bc","cd","dd","bb","bg","ee","dd"),
column3 = c(0.5, 0.1, 0.7, 0.8, 0.2, 0.8, 0.8, 0.3))
我想改变它。
ab ac
bb 0.5 0.2
bc 0.1
cd 0.7
dd 0.8 0.3
bg 0.8
ee 0.8
答案 0 :(得分:3)
reshape2
套餐是您的朋友:
require(reshape2)
dcast(x, column2 ~ column1, value.var="column3")
# column2 ab ac
# 1 bb 0.5 0.2
# 2 bc 0.1 NA
# 3 bg NA 0.8
# 4 cd 0.7 NA
# 5 dd 0.8 0.3
# 6 ee NA 0.8
由于@jmsigner和我在同一时间发布了几乎完全相同的答案,这里是基础R中的一个选项,但是这并没有给你一个很好的输出:
reshape(x, direction="wide", idvar="column2", timevar="column1")
# column2 column3.ab column3.ac
# 1 bb 0.5 0.2
# 2 bc 0.1 NA
# 3 cd 0.7 NA
# 4 dd 0.8 0.3
# 6 bg NA 0.8
# 7 ee NA 0.8
答案 1 :(得分:3)
xtabs(column3 ~ column2+column1, data=x, sparse=TRUE)
6 x 2 sparse Matrix of class "dgCMatrix"
ab ac
bb 0.5 0.2
bc 0.1 .
bg . 0.8
cd 0.7 .
dd 0.8 0.3
ee . 0.8
如果不使用'稀疏'参数,则缺少的类别中将为零。您可以用`is.na&lt; -
替换它们xt <- xtabs(column3 ~ column2+column1, data=x)
is.na(xt) <- xt==0
xt
column1
column2 ab ac
bb 0.5 0.2
bc 0.1
bg 0.8
cd 0.7
dd 0.8 0.3
ee 0.8