2017-01-09 5 views
-1

I den folgenden Datenrahmen in R habeHinzufügen eine Spalte Wert basierend auf der Zeilenindex R in

> head(genes) 
    Genes 
1 APOBEC4 
2 B3GALT2 
3 C1orf127 
4 CAMK1G 
5 CAMTA1 
6 EPHX1 

Ich habe einen Vektor mit Zeilenindizes.

> head(sig) 
[1] 10 11 41 54 125 126 

Jetzt möchte ich einen anderen Spalten Datenrahmen hinzufügen genes, so dass die Reihen im Index sig wird ein Werte „Yes“ erhalten und ansonsten „NO

Etwas wie:

head(genes) 
    Genes Sig 
1 APOBEC4 NO 
2 B3GALT2 NO 
3 C1orf127 NO 
4 CAMK1G NO 
5 CAMTA1 NO 
... 
10 XXX YES 
... 
41 YYY YES 

Ich habe versucht, aber ich konnte keine Lösung finden.

+0

Ich verstehe nicht, warum Menschen negative Stimmen gibt. Jeder ist nicht Experte in allem und hat vielleicht kein grundlegendes Verständnis für andere Programmiersprachen. Ich schreibe Python-Snippets und Shell-Skripte, ich analysiere komplexe Genomdaten, um eine noch komplexere Biologie dahinter zu verstehen. Plötzlich, wenn ich eine grundlegende Frage in etwas stelle, wo ich keine Ahnung habe, und es ist ein bisschen dringend, werden die Leute genervt? Cool. – gthm

Antwort

2

wir einfach base R

genes$Sig <- c("NO", "YES")[(seq_len(nrow(genes)) %in% sig) + 1] 

Oder mit ifelse

genes$Sig <- ifelse(seq_len(nrow(genes)) %in% sig, "YES", "NO") 

verwenden können

Oder erstellen Sie eine Spalte mit "NEIN" und dann "JA" basierend auf dem Index zuweisen

genes$Sig <- "NO" 
genes$Sig[sig] <- "YES" 
1

Ich bin mir nicht sicher, ob Sie rownames in Ihrem Dataframe haben. Wir können row_number() Funktion in dplyr überprüfen verwenden, wenn die Zeile in sig vorhanden ist und dementsprechend den Wert zuweisen

library(dplyr) 
genes %>% 
    mutate(Sig = ifelse(row_number() %in% sig, "YES", "NO")) 
Verwandte Themen