R +;/-列名称折叠和求和
我需要将“+/-”列名折叠为一个列名并添加计数。下面是数据集的一个示例R +;/-列名称折叠和求和,r,sum,R,Sum,我需要将“+/-”列名折叠为一个列名并添加计数。下面是数据集的一个示例 data <- as.data.frame(c("+A","-A","+A","-A", "+A","+A","-B","+B","-B", "C","C")) colnames(data) <- "class" table(data$class) -A -B +A +B C 2 2 4 1 2 有时这些+/-变量可能缺失,或者“C”类也可能缺失。即使我缺少一些类别,我如何将它们相加 有什么想
data <- as.data.frame(c("+A","-A","+A","-A", "+A","+A","-B","+B","-B", "C","C"))
colnames(data) <- "class"
table(data$class)
-A -B +A +B C
2 2 4 1 2
有时这些+/-变量可能缺失,或者“C”类也可能缺失。即使我缺少一些类别,我如何将它们相加
有什么想法吗
table(gsub("\\W", "", data$class))
A B C
6 3 2
这将为您提供类表
的输出。如果这还不够,您可以将其包装为.data.frame(t(c(x))以具有相同的输出,但属于类data.frame
,如下所示:
as.data.frame(t(c(table(gsub("\\W", "", data$class)))))
我修改了你的例子,以涵盖你文章中提到的某些案例。假设您的数据中只有3个类别,我们可以提取字符
A-C
,将其转换为具有3个级别的因子
,然后使用表
。在这种情况下,我们没有类别“C”
的任何条目,将级别转换为因子
有助于保持计数,即使没有类别
data <- data.frame(col = c("+A","A","+A","-A","+A","+A","-B","+B","-B"))
table(factor(sub(".*([A-C]).*", "\\1", data$col), levels = LETTERS[1:3]))
#A B C
#6 3 0
数据不使用类
作为列名。它是一个基本的R函数。
data <- data.frame(col = c("+A","A","+A","-A","+A","+A","-B","+B","-B"))
table(factor(sub(".*([A-C]).*", "\\1", data$col), levels = LETTERS[1:3]))
#A B C
#6 3 0