替换 R 中 csv 文件中一列中的几个字符
Replace several characters from a column in a csv file in R
我有一个如下所示的 csv 文件:
> collar<-read.csv("41361_predicted_by_41365_cluster.csv",header=TRUE,stringsAsFactors = F)
> head(collar)
observed predicted probability
1 Moving/Feeding Standing 1
2 Standing Feeding/Moving 1
3 Standing Feeding/Moving 1
4 Standing Feeding/Moving 1
5 Standing Feeding/Moving 1
6 Standing Feeding/Moving 1
我的问题很简单,但有点难实现,因为我正在学习 R。我只需要在 predicted
列中进行以下字符替换:
1) 将 Feeding/Moving
替换为 Standing
2) 将 Moving/Feeding
替换为 Feeding/Moving
3) 将 Standing
替换为 Moving/Feeding
然后我想使用名称 "corrected_41361_predicted_by_41365_cluster"
.
以 csv 格式写入数据
我正在寻找最紧凑的方式。有没有比 gsub()
不同的方法?感谢任何输入!
您可以尝试这样的操作:
# Read all files in folder
mydocpath = "C:/Users/yourdata"
files <- list.files(path=sprintf("%s",mydocpath), pattern="*.csv", full.names=TRUE, recursive=FALSE)
print(files)
# Read to "list of DFs"
myf = lapply(files, function(x) data.frame(read.csv(x, sep=";", header=F, na = "na", skip=1)))
# Access single DF in list
myf[[1]]
# Do something to each DF
for(i in myf){
print(head(myf))
}
像那样? (我稍微更改了您的示例,以包括 "Moving/Feeding")
library(dplyr)
df %>%
mutate(predicted = case_when(predicted == 'Feeding/Moving' ~ 'Standing',
predicted == 'Moving/Feeding' ~ 'Feeding/Moving',
predicted == 'Standing' ~ 'Moving/Feeding',
TRUE ~ predicted)) %>%
write.csv(file = "corrected_41361_predicted_by_41365_cluster.csv")
文件包含结果:
observed predicted probability
1 Moving/Feeding Moving/Feeding 1
2 Standing Standing 1
3 Standing Standing 1
4 Standing Standing 1
5 Standing Feeding/Moving 1
6 Standing Standing 1
我有一个如下所示的 csv 文件:
> collar<-read.csv("41361_predicted_by_41365_cluster.csv",header=TRUE,stringsAsFactors = F)
> head(collar)
observed predicted probability
1 Moving/Feeding Standing 1
2 Standing Feeding/Moving 1
3 Standing Feeding/Moving 1
4 Standing Feeding/Moving 1
5 Standing Feeding/Moving 1
6 Standing Feeding/Moving 1
我的问题很简单,但有点难实现,因为我正在学习 R。我只需要在 predicted
列中进行以下字符替换:
1) 将 Feeding/Moving
替换为 Standing
2) 将 Moving/Feeding
替换为 Feeding/Moving
3) 将 Standing
替换为 Moving/Feeding
然后我想使用名称 "corrected_41361_predicted_by_41365_cluster"
.
我正在寻找最紧凑的方式。有没有比 gsub()
不同的方法?感谢任何输入!
您可以尝试这样的操作:
# Read all files in folder
mydocpath = "C:/Users/yourdata"
files <- list.files(path=sprintf("%s",mydocpath), pattern="*.csv", full.names=TRUE, recursive=FALSE)
print(files)
# Read to "list of DFs"
myf = lapply(files, function(x) data.frame(read.csv(x, sep=";", header=F, na = "na", skip=1)))
# Access single DF in list
myf[[1]]
# Do something to each DF
for(i in myf){
print(head(myf))
}
像那样? (我稍微更改了您的示例,以包括 "Moving/Feeding")
library(dplyr)
df %>%
mutate(predicted = case_when(predicted == 'Feeding/Moving' ~ 'Standing',
predicted == 'Moving/Feeding' ~ 'Feeding/Moving',
predicted == 'Standing' ~ 'Moving/Feeding',
TRUE ~ predicted)) %>%
write.csv(file = "corrected_41361_predicted_by_41365_cluster.csv")
文件包含结果:
observed predicted probability
1 Moving/Feeding Moving/Feeding 1
2 Standing Standing 1
3 Standing Standing 1
4 Standing Standing 1
5 Standing Feeding/Moving 1
6 Standing Standing 1