我有一个看起来像这样的data.frame。例如:
A;a
B;a
C;b
D;c
A;b
A;d
C;c
第一个pos = key,第二个pos = value。如果关键;值,然后是1,如果不是那么0;
我想从数据创建二进制矩阵,我想有这种表格格式:
0 a b c d
A 1 1 0 1
B 1 0 0 0
C 0 1 1 0
D 0 0 0 1
我可以创建矩阵,但不能创建二元martix,因为有些行是重复的 我的代码:
mydb2 <- structure(list(Key = c("A","B","C","D","E","A","A"),
Value = c("b","c","e","a","f","g","g")),
.Names = c("", ""), class = "data.frame",
row.names = c(NA, -6L))
table(mydb2)
然后出去
我该如何解决?
答案 0 :(得分:1)
正如@Wen在评论中指出的那样,从文件中读取数据(不包含标题行):
> t = read.table('test.txt',sep=';')
> t
V1 V2
1 A a
2 B a
3 C b
4 D c
5 A b
6 A d
7 C c
并使用table
命令并通过将值大于1的所有元素更新为值1将其转换为二进制矩阵:
> t2 <- table(t$V1,t$V2)
> t2[t2 > 1] <- 1
> t2
a b c d
A 1 1 0 1
B 1 0 0 0
C 0 1 1 0
D 0 0 1 0