【发布时间】:2017-11-21 20:09:11
【问题描述】:
我有这样的数据
df <- structure(list(V1 = structure(c(2L, 4L, 4L, 2L, 4L, 4L, 4L, 4L,
1L, 1L, 1L, 1L, 3L, 2L, 2L, 4L, NA, 2L, 2L, 2L, 2L, 4L, 5L, 5L,
5L, NA, NA, 4L), .Label = c("", "1 x Bruit (U)", "1 x TAMAN (M)",
"2 x Bruit (U)", "2 x TIKIam(T)"), class = "factor"), V2 = structure(c(1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L), .Label = c("BUX1_T10963",
"BUX1_T10964", "BUX1_T10965", "BUX1_T10966", "BUX2_T10076"), class = "factor")), .Names = c("V1",
"V2"), class = "data.frame", row.names = c(NA, -28L))
我尝试做一个例子,以便更好地帮助我
前两列是这样的
1 x 布鲁特 (U) BUX1_T10963 2 x 布鲁特 (U) BUX1_T10963 2 x 布鲁特 (U) BUX1_T10963
这里我想知道有多少 BUX1_T10963 有Bruit (U),有多少没有。或有其他东西或空单元格
例如上面的例子,答案是
BUX1_T10963 有 5 个布鲁特 (U)
输出如下所示
BUX1_T10963
Bruit (U) 5
NA 0
. 0
. 0
@d.b 给出了类似
的答案table(df$V1, df$V2)
BUX1_T10963 BUX1_T10964 BUX1_T10965 BUX1_T10966 BUX2_T10076
0 4 0 0 0
1 x Bruit (U) 1 1 2 4 0
1 x TAMAN (M) 0 0 1 0 0
2 x Bruit (U) 2 4 1 1 1
2 x TIKIam(T) 0 0 0 3 0
但它并没有像上面的格式那样显示分配给它们的空的数量,并且还计算了不同于 1 的 2
table(replace(gsub("(\\d x )", "", df$V1), is.na(df$V1), "NA"), df$V2)
BUX1_T10963 BUX1_T10964 BUX1_T10965 BUX1_T10966 BUX2_T10076
0 4 0 0 0
Bruit (U) 3 5 3 5 1
NA 0 0 1 2 0
TAMAN (M) 0 0 1 0 0
TIKIam(T) 0 0 0 3 0
BUX1_T10963 should have 4 empty
BUX1_T10965 should have 1
BUX1_T10966 should have 2
有没有办法在同一个原料上制作它?
【问题讨论】:
-
@d.b 表不计算空位,使 2 与 1 分开。让我显示上面的输出
-
或者只是
with(df, table(V1, V2, useNA = "ifany")),同样,带有空白标签的第一行是空白数。 -
@d.b 有没有办法让它们在同一行?请看上面
-
所以您希望
NA和空白""被同等对待?只需先运行df[df == ""] = NA将所有空白更改为NA。 -
@d.b 因为数据结构有问题,由 df[df == ""] 解决
标签: r