Я работаю над фреймом данных, который выглядит примерно так:
DF.1:
“Ind. Name” “Ind. ID” “Inst” “Inst. ID”
J. Smith 12345 A 532
K. Kapplan 12346 A 532
A. Lindt 12347 A 532
B. Johnson 12348 B 761
E. Pitt 12349 B 761
S. Mathews 12351 C 890
P. Rawles 12351 C 890
P. Right 12352 C 890
O. Stray 12353 C 890
Мне нужно создать функцию, которая позволит мне получить что-то вроде этого:
Df.Result:
“Ind. Name” “Ind.ID” “Linked Ind.” “Linked Ind.ID” “Inst” “Inst.ID”
J. Smith 12345 K. Kapplan 12346 A 352
J. Smith 12345 A. Lindt 12347 A 352
K. Kapplan 12346 J. Smith 12345 A 352
K. Kapplan 12346 A. Lindt 12347 A 352
A. Lindt 12347 J. Smith 12345 A 352
A. Lindt 12347 K. Kapplan 12346 A 352
B. Johnson 12348 E. Pitt 12349 B 761
E. Pitt 12349 B. Johnson 12348 B 761
S. Mathews 12351 P. Rawles 12351 C 890
S. Mathews 12351 P. Right 12352 C 890
S. Mathews 12351 O. Stray 12353 C 890
P. Rawles 12351 P. Right 12352 C 890
P. Rawles 12351 S. Mathews 12351 C 890
P. Rawles 12351 O. Stray 12353 C 890
P. Right 12352 O. Stray 12353 C 890
P. Right 12352 P. Rawles 12351 C 890
P. Right 12352 S. Mathews 12351 C 890
O. Stray 12353 P. Right 12352 C 890
O. Stray 12353 P. Rawles 12351 C 890
O. Stray 12353 S. Mathews 12351 C 890
По сути, мне нужен фрейм данных, который отражает, как «имена инд.» Связаны общим «инст.». Я очень новичок в R, и я попробовал несколько методов, включая разделение Df.1 на фреймы данных для отдельного "Inst" и затем применение следующих функций:
My_function <- function(y){
Inst <- subset(Df.1, grepl(y, Df.1$`Inst.Id`))
+ return(Inst)
+ }
my_list <- c("A", "B", "C")
for(i in my_list){
Inst <- My_function(i)
assign(paste("Inst", i, sep = "."), Inst)
}
А затем получение ссылок на основании:
My_function2 <- function(x){
Df.C <- data.frame("Ind. Name"= C$`Ind`[x], "Linked Ind.Id"= C$`Linked Ind.Id*`[-(x)], "Linked Ind."= C$`Linked Ind.`[-(x)], "Inst"="C","Inst.ID*"=890)
Так что с помощью цикла
for(i in 1:4){
Network <- My_function2(i)
assign(paste("Network", i, sep = ".")
Результаты в четырех фреймах данных:
Network.1:
“Ind. Name” “Ind.ID” “Linked Ind.” “Linked Ind.ID” “Inst” “Inst.ID”
S. Mathews 12351 P. Rawles 12351 C 890
S. Mathews 12351 P. Right 12352 C 890
S. Mathews 12351 O. Stray 12353 C 890
Сеть.2:
“Ind. Name” “Ind.ID” “Linked Ind.” “Linked Ind.ID” “Inst” “Inst.ID”
P. Rawles 12351 P. Right 12352 C 890
P. Rawles 12351 S. Mathews 12351 C 890
P. Rawles 12351 O. Stray 12353 C 890
Network.3:
“Ind. Name” “Ind.ID” “Linked Ind.” “Linked Ind.ID” “Inst” “Inst.ID”
P. Right 12352 O. Stray 12353 C 890
P. Right 12352 P. Rawles 12351 C 890
P. Right 12352 S. Mathews 12351 C 890
Сеть.4:
“Ind. Name” “Ind.ID” “Linked Ind.” “Linked Ind.ID” “Inst” “Inst.ID”
O. Stray 12353 P. Right 12352 C 890
O. Stray 12353 P. Rawles 12351 C 890
O. Stray 12353 S. Mathews 12351 C 890
Учитывая, что у меня 4 000 различных "Inst" и 8 000 "Ind.", Это, конечно, очень неэффективно, поэтому я был бы признателен за любую помощь или советы о том, как это может быть достигнуто функциональным способом в R
Спасибо