suffixes
w merge
działa tylko na wspólnych nazwach kolumn. Czy mimo to można rozszerzyć to również na pozostałe kolumny bez ręcznego aktualizowania kolumn przed scaleniem?Przedłużanie przyrostków w połączeniu z wszystkimi kolumnami innymi niż z podziałem
To jest -
df1 <- data.table(
a = c(1,2,3,4,5,6),
b = c('a','b','f','e','r','h'),
d = c('q','l','o','n','q','z')
)
df2 <- data.table(
a = c(1,2,3,4,5,6),
d = c('q','l','o','n','q','z')
)
colnames(merge(df1,df2, by = 'a', suffixes = c("1","2")))
#[1] "a" "b" "d1" "d2" what it does
#[1] "a" "b1" "d1" "d2" what I'd like it to do
Obecny sposób mam operowania tym przypomina @ odpowiedź mrip użytkownika.
df1 <- data.table(
a = c(1,2,3,4,5,6),
b = c('a','b','f','e','r','h'),
r = c('a','b','f','e','r','h'),
d = c('q','l','o','n','q','z')
)
df2 <- data.table(
a = c(1,2,3,4,5,6),
c = c('a','b','f','e','r','h'),
q = c('a','b','f','e','r','h'),
d = c('q','l','o','n','q','z')
)
dfmerge <- (merge(df1,df2, by = c("a"), suffixes = c("1","2")))
setnames(
dfmerge,
setdiff(names(df1),names(df2)),
paste0(setdiff(names(df1),names(df2)),"1")
)
setnames(
dfmerge,
setdiff(names(df2),names(df1)),
paste0(setdiff(names(df2),names(df1)),"2")
)
colnames(dfmerge)
#[1] "a" "b1" "r1" "d1" "c2" "q2" "d2"
Przypuszczalnie masz na myśli "a1" w tym ostatnim przykładzie, a nie tylko "a"? – joran
Jest to niewygodne, ale z wydajnością "setnames", zastanawiam się, czy zmiana nazwy przed scaleniem stanie się najbardziej prostym rozwiązaniem. – A5C1D2H2I1M1N2O1R2T1
@joran, zgaduję, że nie, ponieważ jest to kolumna "od". – A5C1D2H2I1M1N2O1R2T1