2013-08-07 26 views

cevap

54

Kullanım paste.

df$x <- paste(df$n,df$s) 
df 
# n s  b x 
# 1 2 aa TRUE 2 aa 
# 2 3 bb FALSE 3 bb 
# 3 5 cc TRUE 5 cc 
+0

@ thelatemail - Nasıl 'macun()' kullanarak veri noktaları arasında özel bir karakter eklemek için.? Yukarıdaki örnek için, 'x' sütunu' 2-aa', sonra '3-bb' ve' 5-cc' olarak veri içermelidir. . –

+1

@ thelatemail - Bu benim için çalıştı: 'macunu ($ n df, df $ s Eylül = "-")' –

-3

cbind'u da kullanabilirsiniz.

cbind(df,n,s) 
    n s  b n s 
1 2 aa TRUE 2 aa 
2 3 bb FALSE 3 bb 
3 5 cc TRUE 5 cc 
+0

bu OP – Ferroao

+0

cbind doesnot bitiştirmek sorar neyi üretmez, oldukça birleştiren birden verilerden sütun ekler Eğer asıl soruya beklenen cevabı çoğaltmak 'tidyr' paketini kullanmak istiyorsanız yeni bir dataframe –

5

UA ve kullanarak kaldırılması ile bazı örnekler bir ayırıcı eklemek için

n = c(2, NA, NA) 
s = c("aa", "bb", NA) 
b = c(TRUE, FALSE, NA) 
c = c(2, 3, 5) 
d = c("aa", NA, "cc") 
e = c(TRUE, NA, TRUE) 
df = data.frame(n, s, b, c, d, e) 

sep=" " 
df$x <- apply(df[ , c(1:6) ] , 1 , paste_noNA , sep=sep) 
df 

paste_noNA <- function(x,sep=", ") 
gsub(", " ,sep, toString(x[!is.na(x) & x!="" & x!="NA"])) 
+2

içine çerçeve bu tek liner olacaktır:' tidyr :: birleşin (df, x, n, s, Eylül = " ", remove = FALSE) [, c (adlar (df)," x ")]'. Bununla birlikte, df $ x Uwe

+0

@Ferroao Well, cevaplar aksi her sorunun sadece bir dev cevap içeren her şey olurdu, ya da genel olmamalıdır. NA adlı kaldırılması OP'ın basit bir soru bir parçası değildi, bu yüzden bu ekstra karmaşıklığı basit 'paste' veya' tidyr :: unite' değer katan nasıl görmüyorum. – useR

+0

cevabı, prosedürün birkaç sütuna uygulanmasına izin verir, bu durumda NA'nın görünümü çok olasıdır. – Ferroao

14

df$x <- paste(df$n,"-",df$s) geçerlidir. Eğer birleştirilmiş alanında tanıtılan herhangi dolgu alanı istemiyorsanız

+0

@ LittleBee - Bu, iki veri arasında bir boşluk ekler. Örneğin son çıktı şunun gibidir: A-B yerine “A - B”. Bu ekstra alanı kaldırmak mümkün mü? . –

+2

@ LittleBee - Bu benim için çalıştı: 'macun (df $ n, df $ s Eylül = "-")' –

+1

kullanım paste0 yerine macunun – Ferroao

1

Sen df$combField <- paste0(df$x,df$y)

kullanabilirsiniz. Birleştirilmiş alanı iki alanın kombinasyonlarını temsil eden benzersiz bir kimlik olarak kullanmayı planlıyorsanız, bu daha yararlıdır.

0

dplyr::mutate kullanma:

library(dplyr) 
df <- mutate(df, x = paste(n, s)) 

df 
> df 
    n s  b x 
1 2 aa TRUE 2 aa 
2 3 bb FALSE 3 bb 
3 5 cc TRUE 5 cc 
İlgili konular