2016-03-18 16 views
0

Ich habe versucht, die beiden Zeichenfolgen in der Spalte Patient_ID zu kombinieren, aber meine Ausgabe wurde nicht als eine Spalte formatiert. Was ist falsch?verketten Strings in bestimmten Spalten des Datenrahmens

> head(Clinical) 
    Patient_ID Preoperative_treat Metastasis Cancer_origin Type_of_tumor Recurrence 
1  1 JH     0   0    1    0   0 
2  9 KPH     0   0    0    0   0 
3 11A PAK     0   0    0    0   0 
4  14 KS     0   1    0    0   1 
5 15 REMB     0   0    0   NA   0 
6  88 BS     1   0    0    0   0 


Clinical$Patient_ID <- paste(Clinical$Patient_ID, collapse="_") 
+3

Sie versuchen nur, den Platz durch einen Unterstrich zu ersetzen? Verwenden Sie einfach "gsub" .... – A5C1D2H2I1M1N2O1R2T1

+4

gsub (pattern = "", Ersatz = "_", x = klinische $ Patient_ID) – user2300940

Antwort

0

Ich werde eine Erklärung anbieten, warum das, was Sie versucht haben, nicht funktioniert. Es ist am einfachsten zu sehen, wenn Patient_ID die einzige Spalte in Clinical ist.

Clinical <- data.frame(Patient_ID = c("1 JH", "9 KPH", "11A PAK", "14 KS", "15 REMB", "88 BS")) 
Clinical 
# Patient_ID 
# 1  1 JH 
# 2  9 KPH 
# 3 11A PAK 
# 4  14 KS 
# 5 15 REMB 
# 6  88 BS 

Jede Beobachtung ist ein Länge-1-Zeichen-Vektor. Spezifizieren collapse = "_" wird verketten sie Platzierung _ zwischen jedem Vektor, nicht im Text innerhalb der Vektoren.

paste(Clinical$Patient_ID, collapse = "_") 
# [1] "1 JH_9 KPH_11A PAK_14 KS_15 REMB_88 BS" 

Beachten Sie, dass die Ausgabe ein Zeichenvektor der Länge eins ist.

Lösung: wie andere in den Kommentaren sagten, verwenden Sie gsub, um Leerzeichen innerhalb des Textes zu ersetzen.

gsub("\\s", "_", Patient_ID$Clinical) 
# [1] "1_JH" "9_KPH" "11A_PAK" "14_KS" "15_REMB" "88_BS"