我具有以下格式的2個不同的數據幀的向量的行的交互式子集:的R - 由列標題
DF1 -
v1 v2 v3 v4 v5
a 1 2 +
b 5 2 + +
c 5 2 + +
d 4 3 + +
e 1 5 + +
f 3 5
g 4 2
h 3 1
i 5 5 + +
DF2 -
v1 v2 v3 v4
a 1 2 +
b 5 2 + +
c 5 2 +
d 4 3 +
e 1 5 +
f 3 5
g 4 2
h 3 1
i 5 5 +
我的腳本給出了v1 & v2的散點圖,但是首先我刪除了在在v3-v4或v3-v5中至少有一個「+」。
我的數據幀可以更大,並且具有更多的v1-v2對,但始終具有帶有「+」的v3-v4或v3-v5列。我手動調整代碼以指定要繪製的列和要刪除的行,具體取決於我正在處理的DF格式。
它工作得很好,但我想使腳本更具交互性如下:
# Select v3-v4 or v3-v5 via interactive gui to give vector of column headers.
remove.vars.vector <- select.list(names(DF), # Select columns as vector of column header names via interactive gui.
multiple = TRUE, # Can choose multiple columns.
title = "Choose variables to remove from data set", # Title on gui.
graphics = TRUE) # Allow launch of gui.
# Return columns from DF with this vector of column headers.
remove.vars.subset <- DF[remove.vars.vector]
# Return rows that have at least one "+" in v3-v4 or v3-v5.
remove.vars.subset.+ <- subset(DF, remove.vars.subset == "+")
# Removes all rows that contain >=1 NA.
complete.data.+ <- remove.vars.subset.+[complete.cases(remove.vars.subset.+), ]
# Combine by rows "complete.data.+" with DF.
combo.list <- rbind(DF,complete.data.+)
# Remove duplicate rows from combined data frame.
complete.data <- combo.list[!duplicated(combo.list, fromLast = FALSE) & !duplicated(combo.list, fromLast = TRUE),]
問題:上述代碼不完全剝離包含行的數據幀中的至少一個「+ 「在v3-4或v3-5中。這個問題似乎是這些行:
# Return rows that have at least one "+" in v3-v4 or v3-v5.
remove.vars.subset.+ <- subset(DF, remove.vars.subset == "+")
我也在最後得到的行數僅NA在每個細胞中,因此在下一行代碼complete.cases。
因此,最終的數據框仍然包含一些在v3-4或v3-5中帶有「+」的行。
問題:
有沒有更好的方式來子集數據幀行使用的列標題的載體可以在他們的行包含「+」?
預先感謝您。
編輯 - 09/08/2016 - 18:54 我剛剛注意到我沒有說明我的數據框的內容。某些行在v3-v4或v3-v5中沒有「+」。這些是我最終想要保留的行,所以我可以繪製分散圖。我相應地編輯了數據框。我只是在尋找答案來嘗試和理解它們。我仍然很陌生。
剛剛嘗試過你的建議,它的工作完美。你正確地猜測有些行不會有「+」(我在嘗試你的建議之前編輯過我的文章)。應用系列功能已移到我的列表的頂部,以便在R中進行探索。非常感謝您的快速響應。 –
PS:我通過將我的原始方法數據框綁定到用您的修改生成的數據框來驗證,然後刪除重複的行。答案是數據框沒有行....真棒。我的大腦正在緩慢採用R編程邏輯! –