我有一个大型数据集,我试图根据两个单独列的值进行过滤。对于每一行,我有一列显示其总计数 (tot),一列显示看到该类型样本的总次数 (tot.type)。
例如,我想根据 (tot) 和 (tot.type) 过滤数据,其中 (tot) OR (tot.type) 必须大于或等于 2。
我发现的基于多个值进行过滤的所有示例都使用“AND”,但没有使用“OR”的地方......
Example data:
name = c("A","B","C","D","E")
rx = c(1,0,2,1,1)
ry = c(0,1,1,0,0)
rz = c(0,0,2,2,3)
type = c("p","q","r","p","r")
tot = c(1,1,5,3,4)
tot.type = c(2,1,2,2,2)
test = data.frame(name,rx,ry,rz,tot,tot.type)
Run Code Online (Sandbox Code Playgroud)
在此示例中,我将丢弃 B 行,并保留其余行。
我已根据一列或另一列将数据过滤为 2 个单独的数据集,然后将它们合并,但这是否可以在生成一个数据集的一行中完成,而不是先执行两个单独的数据集,然后再将它们合并?
我想根据var_1的值知道每列的唯一值的总数.
例如:
Test <- data.frame(var_1 = c("a","a","a", "b", "b", "c", "c", "c", "c", "c"), var_2 = c("bl","bf","bl", "bl","bf","bl","bl","bf","bc", "bg" ), var_3 = c("cf","cf","eg", "cf","cf","eg","cf","dr","eg","fg"))
Run Code Online (Sandbox Code Playgroud)
我正在寻找的结果将基于var_1中的值,应该是:
var_1 var_2 var_3
a 2 2
b 2 1
c 3 4
Run Code Online (Sandbox Code Playgroud)
但是,在尝试了各种方法(包括apply和table)之后 - 聚合与我正在寻找的最接近的东西,但是这个脚本导致var_1的每个值的条目总数的摘要,但总数不是独特
agbyv1= aggregate(. ~ var_1, Test, length)
var_1 var_2 var_3
a 3 3
b 2 2
c 5 5
Run Code Online (Sandbox Code Playgroud)
我试过了
unqbyv1= aggregate(. ~ var_1, Test, length(unique(x)))
Run Code Online (Sandbox Code Playgroud)
但那没用.
任何帮助是极大的赞赏.
我道歉,不知道如何在问题框中插入data.table.
我有一个包含大量行的数据集,如下所示:
phylum class family order genus species
A B C D E NA
A B C D E NA
A B C D NA NA
A B C D E F
A B C D NA NA
A B C D E F
Run Code Online (Sandbox Code Playgroud)
我希望为每个匹配的行分配一个唯一的ID,例如:
ID phylum class family order genus species
1 A B C D E NA
1 A B C D E NA
2 A B C D NA NA
3 A B C D E F …Run Code Online (Sandbox Code Playgroud)