【发布时间】:2018-02-28 18:57:49
【问题描述】:
我有一个包含单列的数据框(命中)。这填充了独特的搜索结果。
第二个数据框(数据)包含各种搜索查询的结果。列名标识所使用的搜索词,行中填充了搜索结果。
我想构建一个矩阵或另一个数据框,根据搜索结果是否按列填充。
我可以使用带有以下代码的 base R 来做到这一点:
library(tidyverse)
hit <- read_csv("hit
A1
A3
B2
B4
D3")
data <- read_csv("Search1, Search2, Search3, Search4
A1, B4, A3, A1
B4, D3, NA, B2
D3, NA, NA, B4")
search <- c("Search1", "Search2", "Search3", "Search4")
the_matrix <- matrix(data = NA, nrow = 5, ncol = 4)
rownames(the_matrix) <- hit$hit
colnames(the_matrix) <- search
for (i in search)
for (j in 1:3){
result <- data[[i]][[j]]
row_index <- which(rownames(the_matrix) == result)
the_matrix[row_index, i] <- 1
}
the_matrix[is.na(the_matrix)] <- 0
在我看来,应该有一种方法可以使用 tidyverse 实现相同的结果,使用第一个数据帧作为起点。从那里开始,使用搜索结果作为填充键逐列引入第二个数据框。
谁能帮忙?
【问题讨论】:
-
read_csv 是一个整洁的 verse 函数。
-
代码在我的机器上运行。我只是忘了包括图书馆(tidyverse)