目前,我正在尝试浏览数据库的精选几列。列包含部件号,并且在放入向量之前需要删除一些部件名称。我可以使用以下循环为一列执行此操作。但是,我希望能够遍历我想要的所有列,而无需为每列复制循环。
Ordered = NULL
for (i in x1$V4) {
if (i != as.character("PartX")) #if statement of i is not equal to PartX
Ordered[i] <- i #puts i in new vector
}
z=data.frame(table(Ordered))
我希望能够使用table
为所有部件号创建表格。我尝试通过apply
执行此操作,但效果不佳。我知道这段代码可以工作,我只需要在多列上扩展它。
这就是我的数据集目前的样子。
# V4 V5 V6 V7 V8
# PartA PartE PartC PartX PartX
# PartC PartX PartX PartX PartX
# PartF PartB PartE PartD PartA
# PartE PartA PartC PartX PartX
# PartA PartE PartD PartX PartX
# PartB PartA PartC PartF PartX
这就是我想要的最新矢量/数据集最终结果。
# V1
# PartA
# PartC
# PartF
# PartE
# PartA
# PartB
# PartE
# PartB
# PartA
# PartE
# PartA
# PartC
# PartE
# PartC
# PartD
# PartC
# PartD
# PartF
# PartA
答案 0 :(得分:0)
这将计算所有部分(不包括PartX,或者至少为该部分返回0,但实际上,你可以将它留在其中)。这是使用x1
版本,包含5列和6个潜在部分,包括“PartX”:
do.call(cbind, lapply(x1, function(col) table(col[col != "PartX"])))
# V1 V2 V3 V4 V5
# PartA 1 0 2 1 1
# PartB 2 2 2 1 0
# PartC 1 3 3 3 1
# PartD 3 0 1 1 3
# PartE 0 4 0 4 5
# PartX 0 0 0 0 0
我们用它作为输入:
# V1 V2 V3 V4 V5
# 1 PartB PartB PartX PartC PartE
# 2 PartC PartB PartB PartD PartD
# 3 PartD PartE PartD PartC PartE
# 4 PartX PartC PartA PartB PartD
# 5 PartB PartE PartB PartE PartD
# 6 PartX PartC PartC PartE PartE
# 7 PartX PartE PartA PartE PartA
# 8 PartD PartX PartC PartA PartC
# 9 PartD PartC PartX PartE PartE
# 10 PartA PartE PartC PartC PartE
由...生成:
set.seed(1)
vals <- c(paste0("Part", LETTERS[1:5]), "PartX")
x1 <- setNames(
as.data.frame(
replicate(5, factor(sample(vals, 10, r=T), levels=vals), simplify=F)
),
paste0("V", 1:5)
)