Betrachten Sie die Beispieldaten
set.seed(1)
MergedDF <- data.frame("z" = c(0,1,2,3,0,1,2,3),
"cntry_origin" = letters[1:8],
"V2" = rnorm(8,0,1),
stringsAsFactors = FALSE)
# z cntry_origin V2
# 1 0 a -0.6264538
# 2 1 b 0.1836433
# 3 2 c -0.8356286
# 4 3 d 1.5952808
# 5 0 e 0.3295078
# 6 1 f -0.8204684
# 7 2 g 0.4874291
# 8 3 h 0.7383247
für einen bestimmten Zustand eines data.frame Filtern
Um alle Zeilen zu erhalten wo z == 0
MergedDF[MergedDF$z == 0, ]
# z cntry_origin V2
# 1 0 a -0.6264538
# 5 0 e 0.3295078
Auswählen bestimmter Spalten
Um alle Werte in Spalte zu erhalten cntry_origin
wo z==0
gibt es zwei gleichwertige Aussagen:
MergedDF[MergedDF$z == 0, "cntry_origin"]
# [1] "a" "e"
## Or
MergedDF[MergedDF$z == 0, ]$cntry_origin
# [1] "a" "e"
Um den Wert der Spalte V2
, wo z==0
MergedDF[MergedDF$z == 0, ]$V2
#[1] -0.6264538 0.3295078
Ersetzen eines Co lumn mit unterschiedlichen Werten
Um die Spalte cntry_origin
mit V2
zu ersetzen, wo z==0
es ist nur eine Frage von einem zum anderen
MergedDF[MergedDF$z == 0, ]$cntry_origin <- MergedDF[MergedDF$z == 0, ]$V2
MergedDF
# z cntry_origin V2
# 1 0 -0.626453810742332 -0.6264538
# 2 1 b 0.1836433
# 3 2 c -0.8356286
# 4 3 d 1.5952808
# 5 0 0.329507771815361 0.3295078
# 6 1 f -0.8204684
# 7 2 g 0.4874291
# 8 3 h 0.7383247
Die äquivalenten data.table
Zuordnung Code wäre
library(data.table)
setDT(MergedDF)[z==0, cntry_origin := V2]
'MergedDf [MergedDf $ z == 0,] cntry_origin $ <- MergedDf [MergedDf $ z == 0,] $ V2' – SymbolixAU
Dank ... aber ist das Datatable? Ich bin nicht vertraut mit der Syntax ... können Sie weiter erklären? – user1916067
Nein, es ist Base R - siehe meine Antwort – SymbolixAU