R在数据框中找到小于另一个向量中的值的值
R find values in a dataframe which are smaller than values in another vector
这是我的数据:
myvec <- c(9,12,18)
mytez1 <- c(5,10,15,0,3,13)
mytez2 <- c(7,14,12,8,2,17)
mytez3 <- c(5,9,11,16,19,20)
mytez <- data.frame(mytez1, mytez2, mytez3)
因此最后我使用了一个向量(myvec)和一个数据帧(mytez)。我的目标是计算数据帧 (mytez) 中小于向量 (myvec) 值的所有值。因此,我想分别找到每列的计数。因此,数据帧的第一列 (mytez1) 应该只与 myvec 的第一个值(此处为 9)进行比较,以找出小于 9 的值的数量(在 mytez1 中为 3 个值)。
我知道它是如何与 sum:
一起工作的
sum(mytez[,1] < myvec[1], na.rm="TRUE")
但由于我有一个非常大的数据集,我需要找到一个循环来完成它。
使用 sapply 时:
counts <- sapply(myvec, function(x) sum(mytez<x))
它没有像我想的那样单独进行。
有人知道如何去做吗?
非常感谢!
以下是在 base R 中执行此操作的几种方法:
#1. Using sweep
colSums(sweep(mytez, 2, myvec, `<`))
#2. Using mapply
colSums(mapply(`<`, mytez, myvec))
#3. Transposing the dataframe
rowSums(t(mytez) < myvec)
#Output
#mytez1 mytez2 mytez3
# 3 3 4
这是我的数据:
myvec <- c(9,12,18)
mytez1 <- c(5,10,15,0,3,13)
mytez2 <- c(7,14,12,8,2,17)
mytez3 <- c(5,9,11,16,19,20)
mytez <- data.frame(mytez1, mytez2, mytez3)
因此最后我使用了一个向量(myvec)和一个数据帧(mytez)。我的目标是计算数据帧 (mytez) 中小于向量 (myvec) 值的所有值。因此,我想分别找到每列的计数。因此,数据帧的第一列 (mytez1) 应该只与 myvec 的第一个值(此处为 9)进行比较,以找出小于 9 的值的数量(在 mytez1 中为 3 个值)。 我知道它是如何与 sum:
一起工作的sum(mytez[,1] < myvec[1], na.rm="TRUE")
但由于我有一个非常大的数据集,我需要找到一个循环来完成它。 使用 sapply 时:
counts <- sapply(myvec, function(x) sum(mytez<x))
它没有像我想的那样单独进行。 有人知道如何去做吗? 非常感谢!
以下是在 base R 中执行此操作的几种方法:
#1. Using sweep
colSums(sweep(mytez, 2, myvec, `<`))
#2. Using mapply
colSums(mapply(`<`, mytez, myvec))
#3. Transposing the dataframe
rowSums(t(mytez) < myvec)
#Output
#mytez1 mytez2 mytez3
# 3 3 4