ike*_*kel 1 for-loop r dataframe
我有一个调查表如下
E313 B515 C515 ... (more columns)
1122 John doe I don't like the lesson
2211 Mary Jane It was excellent
Run Code Online (Sandbox Code Playgroud)
调查提供者还提供了用于解码调查中的列的标签,如下 ( survey_data_map.csv):
Code Label
E313 Unique Identifier
B515 Full name
C515 Feedback
.
.
.
(more rows)
Run Code Online (Sandbox Code Playgroud)
因此,我编写了一个小片段,将调查中的列解码为列标签。
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
}
}
Run Code Online (Sandbox Code Playgroud)
解码列名的列名survey_data_map.csv可能会改变。我的问题是如何重写 for 循环以使用列索引而不是使用列名Code和Label?
谢谢。
一般来说,数据帧的列可以使用[[子集运算符来寻址。您可以使用数字索引或名称(作为字符串)来执行此操作:
survey_data_map[[1L]] # same as\nsurvey_data_map[[\'Code\']]\nRun Code Online (Sandbox Code Playgroud)\n但是,请确保这是您实际应该做的!你写了:
\n\n\n如果提供者更改了列名怎么办?
\nsurvey_data_map.csv
而 \xe2\x80\x99s 确实是一个合理的担忧!但是,至少如果发生这种情况,\xe2\x80\x99 可能会出现错误。相反,另一件经常发生的事情是有人对表的列重新排序。如果发生这种情况并且您使用列索引,您的代码将继续运行,但会产生错误的结果。
\n