gpt4 book ai didi

r - 在 R 中跨多行匹配文本

转载 作者:行者123 更新时间:2023-12-04 09:12:23 24 4
gpt4 key购买 nike

我的 data.frame(Networks)包含以下内容:

Location <- c("Farm", "Supermarket", "Farm", "Conference", 
"Supermarket", "Supermarket")
Instructor <- c("Bob", "Bob", "Louise", "Sally", "Lee", "Jeff")
Operator <- c("Lee", "Lee", "Julie", "Louise", "Bob", "Louise")

Networks <- data.frame(Location, Instructor, Operator, stringsAsFactors=FALSE)

我的问题

我想加入一个新专栏 Transactions$Count在一个新的数据框 Transactions总结每个 Instructor 之间的交换和 OperatorLocation 预期输出
Location <- c("Farm", "Supermarket", "Farm", "Conference", "Supermarket")
Person1 <- c("Bob", "Louise", "Sally", "Jeff")
Person2 < - c("Lee", "Julie", "Louise", "Louise")
Count < - c(1, 2, 1, 1, 1)
Transactions <- data.frame(Location, Person1, Person2, Count,
stringsAsFactors=FALSE)

例如,Bob 和 Lee 在超市总共进行了 2 次交易。不管一个人是讲师还是运算符(operator),我对他们的交流很感兴趣。在预期输出中,注意到了 Bob 和 Lee 在超市的两次交流。在其他位置,每个其他组合都有一个交换。
我试过的
我以为 grepl可能有用,但我希望遍历此数据的 1300 行,因此计算成本可能很高。
谢谢你。

最佳答案

您可以考虑使用“data.table”并使用 pminpmax在你的“by”论点中。

例子:

Networks <- data.frame(Location, Instructor, Operator, stringsAsFactors = FALSE)
library(data.table)

as.data.table(Networks)[
, TransCount := .N,
by = list(Location,
pmin(Instructor, Operator),
pmax(Instructor, Operator))][]
# Location Instructor Operator TransCount
# 1: Farm Bob Lee 1
# 2: Supermarket Bob Lee 2
# 3: Farm Louise Julie 1
# 4: Conference Sally Louise 1
# 5: Supermarket Lee Bob 2
# 6: Supermarket Jeff Louise 1

根据您的更新,这听起来可能更适合您:
as.data.table(Networks)[
, c("Person1", "Person2") := list(
pmin(Instructor, Operator),
pmax(Instructor, Operator)),
by = 1:nrow(Networks)
][
, list(TransCount = .N),
by = .(Location, Person1, Person2)
]
# Location Person1 Person2 TransCount
# 1: Farm Bob Lee 1
# 2: Supermarket Bob Lee 2
# 3: Farm Julie Louise 1
# 4: Conference Louise Sally 1
# 5: Supermarket Jeff Louise 1

关于r - 在 R 中跨多行匹配文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com