[英]Transform R dataframes using variables in loop
我試圖按列替換R數據框中的值。 我想遍歷數據框的給定列表,並將所有“是”值替換為1,並將所有其他值替換為0。
我試圖使用transform()和ifelse()函數來完成此操作,如下所示:
# List of selected Columns:
ColumnNames = c("Frigori", "Microond" , "Arca", "Aspira")
# Replace Values in dataframe
for(i in 1:length(ColumnNames)){
dataframe <- transform(dataframe, ColumnNames[i] = ifelse(Columnames[i] == "Yes", 1, 0))
}
這段代碼在循環外使用顯式列名可以正常工作,但是使用數組會給我以下錯誤:
Error: unexpected '=' in:
"for(i in 1:length(Appliances)){
dataframe <- transform(dataframe, ColumnNames[i] ="
我不知道這里出了什么問題,但是問題必須與變量替換有關。
實際上,可以將代碼簡化為一小段代碼,沒有循環,也沒有apply()
:
dataframe <- data.frame(a = c("No", "Yes", "No", "No", "Yes"),
b = c("Hi", "Hi", "Mom", "Hi", "Mom"),
c = c("Yes", "Yes", "Yes", "Yes", "No"))
cols <- c("a","c")
dataframe[,cols] <- as.numeric(dataframe[,cols]=="Yes")
dataframe
a b c
1 0 Hi 1
2 1 Hi 1
3 0 Mom 1
4 0 Hi 1
5 1 Mom 0
模擬數據:
data <- data.frame(matrix(ifelse(runif(40)>.5,"YES",letters[1:26]), 10, 4))
假設您要更改列X2和X4
cols <- c("X2","X4")
data[,cols] <- apply(data[cols],2,function(x) ifelse(x=="YES",1,0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.