背景
我有一個調查表如下
E313 B515 C515 ... (more columns)
1122 John doe I don't like the lesson
2211 Mary Jane It was excellent
調查提供者還提供了用于對調查中的列進行解碼的標簽,如下所示 ( survey_data_map.csv):
Code Label
E313 Unique Identifier
B515 Full name
C515 Feedback
.
.
.
(more rows)
所以我寫了一個小片段,將調查中的列解碼為列標簽。
survey_data_map <- read.csv("survey_data_map.csv")
for(i in 1:length(names(survey))) {
label <- survey_data_map$Label[survey_data_map$Code == names(survey)[i]]
if (length(label) > 0) {
names(survey)[i] <- label
}
}
問題
解碼列名的survey_data_map.csv列名可能會更改。我的問題是如何重寫 for 回圈以使用列索引而不是使用列名Code和Label?
謝謝你。
uj5u.com熱心網友回復:
[[通常,可以使用子集運算子來處理資料幀的列。您可以使用數字索引或名稱(作為字串)來執行此操作:
survey_data_map[[1L]] # same as
survey_data_map[['Code']]
但是,請確保這是您實際應該做的!你寫了:
如果提供者更改了
survey_data_map.csv
這確實是一個有效的擔憂!但是,至少如果發生這種情況,您很可能會收到錯誤訊息。相反,另一件經常發生的事情是有人對表的列重新排序。如果發生這種情況并且您使用列索引,您的代碼將繼續運行,但會產生錯誤的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412467.html
標籤:
