列出所有列元素名称
List all column element names
可能是个简单的问题。我有一个如下所示的数据集。
dat2 <- read.table(header=TRUE, text="
ID De Ep Ti ID1
A1123 A117 A121 A100 A11231
A1123 A108 C207 D110 E11232
A1124 A122 C207 D110 E11232
A1124 A117 C207 D110 E11232
A1124 A122 C208 D110 E11232
B1125 A108 C208 D110 E11232
B1125 A108 C208 D110 E11232
B1126 A122 C208 D110 E11233
C1126 A109 C208 D111 E11233
")
dat2
dat2
ID De Ep Ti ID1
1 A1123 A117 A121 A100 A11231
2 A1123 A108 C207 D110 E11232
3 A1124 A122 C207 D110 E11232
4 A1124 A117 C207 D110 E11232
5 A1124 A122 C208 D110 E11232
6 B1125 A108 C208 D110 E11232
7 B1125 A108 C208 D110 E11232
8 B1126 A122 C208 D110 E11233
9 C1126 A109 C208 D111 E11233
我可以使用 table
函数获取摘要。
table(dat2$ID)
A1123 A1124 B1125 C1126
2 3 3 1
table(dat2$De)
A108 A109 A117 A122
3 1 2 3
我想在前两列中列出所有元素名称,如下所示。
t <- c("A1123", "A1124","B1125","C1126", "A108", "A109", "A117", "A122")
t
[1] "A1123" "A1124" "B1125" "C1126" "A108" "A109" "A117" "A122"
基于 Neal 的快速响应,我可以轻松获得前两列的列表。
with(dat2, union(ID, De))
[1] "A1123" "A1124" "B1125" "C1126" "A117" "A108" "A122" "A109"
但是如果我想从所有列中获取姓名列表,那么上面的代码就不起作用了。
使用并集在两组中查找唯一值:
with(dat2, union(ID, De))
对于所有列,使用 Reduce:
Reduce(union, dat2)
获取整个数据框的唯一值的另一个选项是:
unique(unlist(dat2))
给出:
> unique(unlist(dat2))
[1] A1123 A1124 B1125 B1126 C1126 A117 A108 A122 A109 A121
[11] C207 C208 A100 D110 D111 A11231 E11232 E11233
18 Levels: A1123 A1124 B1125 B1126 C1126 A108 A109 A117 A122 A121 C207 ... E11233
如果您想要对每个唯一值进行计数,您可以使用:
table(unlist(dat2))
这导致:
A1123 A1124 B1125 B1126 C1126 A108 A109 A117 A122 A121 C207
2 3 2 1 1 3 1 2 3 1 3
C208 A100 D110 D111 A11231 E11232 E11233
5 1 7 1 1 6 2
可能是个简单的问题。我有一个如下所示的数据集。
dat2 <- read.table(header=TRUE, text="
ID De Ep Ti ID1
A1123 A117 A121 A100 A11231
A1123 A108 C207 D110 E11232
A1124 A122 C207 D110 E11232
A1124 A117 C207 D110 E11232
A1124 A122 C208 D110 E11232
B1125 A108 C208 D110 E11232
B1125 A108 C208 D110 E11232
B1126 A122 C208 D110 E11233
C1126 A109 C208 D111 E11233
")
dat2
dat2
ID De Ep Ti ID1
1 A1123 A117 A121 A100 A11231
2 A1123 A108 C207 D110 E11232
3 A1124 A122 C207 D110 E11232
4 A1124 A117 C207 D110 E11232
5 A1124 A122 C208 D110 E11232
6 B1125 A108 C208 D110 E11232
7 B1125 A108 C208 D110 E11232
8 B1126 A122 C208 D110 E11233
9 C1126 A109 C208 D111 E11233
我可以使用 table
函数获取摘要。
table(dat2$ID)
A1123 A1124 B1125 C1126
2 3 3 1
table(dat2$De)
A108 A109 A117 A122
3 1 2 3
我想在前两列中列出所有元素名称,如下所示。
t <- c("A1123", "A1124","B1125","C1126", "A108", "A109", "A117", "A122")
t
[1] "A1123" "A1124" "B1125" "C1126" "A108" "A109" "A117" "A122"
基于 Neal 的快速响应,我可以轻松获得前两列的列表。
with(dat2, union(ID, De))
[1] "A1123" "A1124" "B1125" "C1126" "A117" "A108" "A122" "A109"
但是如果我想从所有列中获取姓名列表,那么上面的代码就不起作用了。
使用并集在两组中查找唯一值:
with(dat2, union(ID, De))
对于所有列,使用 Reduce:
Reduce(union, dat2)
获取整个数据框的唯一值的另一个选项是:
unique(unlist(dat2))
给出:
> unique(unlist(dat2))
[1] A1123 A1124 B1125 B1126 C1126 A117 A108 A122 A109 A121
[11] C207 C208 A100 D110 D111 A11231 E11232 E11233
18 Levels: A1123 A1124 B1125 B1126 C1126 A108 A109 A117 A122 A121 C207 ... E11233
如果您想要对每个唯一值进行计数,您可以使用:
table(unlist(dat2))
这导致:
A1123 A1124 B1125 B1126 C1126 A108 A109 A117 A122 A121 C207
2 3 2 1 1 3 1 2 3 1 3
C208 A100 D110 D111 A11231 E11232 E11233
5 1 7 1 1 6 2