2017-08-28 3 views
1

Ich bin sehr neu in R.R Kombinieren von Spalten basierend auf Namen

Ich habe einen Rohdatensatz mit etwa 300 Spalten. Die Spaltennamen sind ähnlich wie: "Bild auf Buchumschlag", "Titel auf Buchumschlag", "Autor auf Buchumschlag", "Buchumschlag", "Titel", "Autor", "Blouson" , "Dustjacket Author", "Dustjacket Zusammenfassung", "Zusammenfassung auf der Vorderseite des Buches", "Rückseite der Buchrezensionen", "Preis"

Ich möchte den gesamten Text auf der Titelseite des Buches in eine neue Spalte verketten benannt "Cover". Neue Spalten können später hinzugefügt werden und ich möchte, dass es möglich ist. Ich habe herausgefunden, wie man grep dazu bringt, auszugeben, in welchen Spalten das Wort "Cover" enthalten ist, aber ich kann nicht herausfinden, wie man sie miteinander verkettet.

Viele Themen hier diskutiert über die Verwendung von Einfügen, aber ich kann nicht scheinen, um die Syntax korrekt zu bekommen. Es ist wahrscheinlich ein grundlegendes Missverständnis meinerseits, aber ich schätze jede und jede Hilfe, die Sie geben können. Hier

+2

Try 'do.call (Paste, rawdata [cols])'. – nicola

+1

Nun, verwenden Sie "Paste" nicht "Paste0" in Nicolas Vorschlag, da Sie einen Abstand zwischen ihnen wollen – Gregor

+0

Das hat perfekt funktioniert, vielen Dank! Ich werde auf do.call nachlesen, damit ich verstehen kann, wie das funktioniert. Und danke Gregor, dass du die Paste0 vs Paste aufgefangen hast! –

Antwort

1

ist eine Version mit apply()

rawdata = matrix(c(1:20), ncol=5) 
colnames(rawdata) = c("Cover_a", "Cover_b", "c", "d", "ee") 
rawdata[,2] = "some text" 

cdf <- colnames(rawdata) #column name data frame 
cols <- grep("Cover",cdf) #returns column numbers that have the word Cover in them. 

apply(rawdata[,cols], 1, paste, collapse=" ") 
Verwandte Themen