我们得到一个向量,如下所示:
x <- c(1,2,1,5,2,1,2,5,1)
我们需要的是一个data.frame
say y
,行数等于length(x)
,列数等于length(unique(x))
,这意味着 x
中每个唯一项目一列,这样 y[i,j]==TRUE
当且仅当 x
的第 i
元素是 x
的第 j
个唯一项(分配给列j
):
y <- data.frame("1"=x==1, "2"=x==2, "5"=x==5, check.names=F)
执行此操作的简单方法是:
y <- setNames(data.frame(sapply(unique(x), function(i) x==i)), unique(x))
您有更好的主意(即特定功能)吗?
最佳答案
如果您可以接受二进制表示而不是数据的逻辑表示,我会只使用table
:
y <- table(seq_along(x), x)
要获取 data.frame
,请使用 as.data.frame.matrix
:
as.data.frame.matrix(y)
# 1 2 5
# 1 1 0 0
# 2 0 1 0
# 3 1 0 0
# 4 0 0 1
# 5 0 1 0
# 6 1 0 0
# 7 0 1 0
# 8 0 0 1
# 9 1 0 0
关于r - 将向量转换为 data.frame,每个唯一值对应一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20373994/