Return 当这些行值出现在 R 中的 df2 中时 df1 的行索引
Return the row indices of df1 when those row values occur in df2 in R
我正在用 R 编写代码。我有一个大数据框 (df1) 和一个小数据框 (df2)。 df2 是 df1 的子集,但顺序是随机的。我需要知道 df2 中出现的 df1 的行索引。所有特定的单元格值都有很多重复项。 Tapirus terrestris 出现不止一次,每个 ModType 值也是如此。我尝试使用 which() 和 grpl() 进行试验,但无法让我的代码正常工作。
df1 <- data.frame(
SpeciesName = c('Tapirus terrestris', 'Panthera onca', 'Leopardus tigrinus' , 'Leopardus tigrinus'),
ModType = c('ANN', 'GAM', 'GAM','RF'),
Variable_scale = c('aspect_s2_sd', 'CHELSAbio1019_s3_sd','CHELSAbio1015_s4_sd','CHELSAbio1015_s4_sd'))
df2 <- data.frame(
SpeciesName = c('Tapirus terrestris', 'Leopardus tigrinus'),
ModType = c('ANN', 'RF'),
Variable_scale = c('aspect_s2_sd', 'CHELSAbio1015_s4_sd'))
应该输出一个数组:1,4 因为 df1 第 1 行和第 4 行出现在 df2 中。
您可以在 df1
和 merge
数据集中创建索引列。
df1$index <- 1:nrow(df1)
df3 <- merge(df1, df2)
df3$index
#[1] 4 1
您可以使用 match
.
df1[match(df2$SpeciesName, df1$SpeciesName), ]
另一种选择是tidyverse
library(dplyr)
df1 %>%
mutate(index = row_number()) %>%
inner_join(df2)
我正在用 R 编写代码。我有一个大数据框 (df1) 和一个小数据框 (df2)。 df2 是 df1 的子集,但顺序是随机的。我需要知道 df2 中出现的 df1 的行索引。所有特定的单元格值都有很多重复项。 Tapirus terrestris 出现不止一次,每个 ModType 值也是如此。我尝试使用 which() 和 grpl() 进行试验,但无法让我的代码正常工作。
df1 <- data.frame(
SpeciesName = c('Tapirus terrestris', 'Panthera onca', 'Leopardus tigrinus' , 'Leopardus tigrinus'),
ModType = c('ANN', 'GAM', 'GAM','RF'),
Variable_scale = c('aspect_s2_sd', 'CHELSAbio1019_s3_sd','CHELSAbio1015_s4_sd','CHELSAbio1015_s4_sd'))
df2 <- data.frame(
SpeciesName = c('Tapirus terrestris', 'Leopardus tigrinus'),
ModType = c('ANN', 'RF'),
Variable_scale = c('aspect_s2_sd', 'CHELSAbio1015_s4_sd'))
应该输出一个数组:1,4 因为 df1 第 1 行和第 4 行出现在 df2 中。
您可以在 df1
和 merge
数据集中创建索引列。
df1$index <- 1:nrow(df1)
df3 <- merge(df1, df2)
df3$index
#[1] 4 1
您可以使用 match
.
df1[match(df2$SpeciesName, df1$SpeciesName), ]
另一种选择是tidyverse
library(dplyr)
df1 %>%
mutate(index = row_number()) %>%
inner_join(df2)