让我解释一下,
我有一个包含不同 Dataframe 的列表,为了进行分析,我需要纠正每个 Dataframe 的数据类型, Dataframe 中的所有数据都存储为字符,所以我想修复这个问题。但我没有对每个 Dataframe 都这样做,而是想使用一个循环。
首先我删除了不想更改为数字的列,然后我将它们更改为数字。然后我将这些列添加回去,年份是YYYY-YY格式的字符,因此我将其更改为日期,然后再更改为数字年份。
library("tidyverse")
temp_num_func <- function(x){
as.numeric(x, digits = 4)
}
for(i in 1:length(listofdf)){
temp_df <- listofdf[[i]]
temp_df1 <- select(temp_df, -state_ut, -`_year`) #removed as all
#other columns are to be converted into numeric
temp_df1 <- temp_df1 %>% mutate_if(is.character, temp_num_func)
temp_df2 <- select(temp_df, state_ut, `_year`)
temp_df2$`_year` <- as.Date(temp_df2$`_year`, format = "%Y")
temp_df2$`_year` <- as.numeric(format(temp_df2$`_year`, "%Y"))
listofdf[[i]] <- temp_df2 %>% add_column(temp_df1)
}
获取错误:
警告:强制引入的NAs警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制引入的NA警告:强制性引进的不适用dput(head(temp_df1[1:4]))
输出:
构造(列表(仅主节点= c("88.68"、"91.21"、"96.95"、"89.74"、"100"、"100"),主节点与主节点= c("95.98"、"96.92"、"99.03"、"97.37"、"100"、"100"),主服务器具有主服务器秒小时秒= c("98.81"、"99.48"、"99.72"、"100"、"100"、"100"),u_主要_仅c("91.39"、"91.39"、"96.32"、"0"、"100"、"0")),行.名称= c(NA,6L),类=#"数据.帧")dput(head(listofdf[[1]][1:4]))
构造(list(state_ut = c("安达曼和尼科巴群岛","安达曼和尼科巴群岛","安达曼和尼科巴群岛","安得拉邦","安得拉邦","安得拉邦"),_year
= c("2013 - 14年"、"2014 - 15年"、"2015 - 16年"、"2013 - 14年"、"2014 - 15年"、"2015 - 16年"),仅小学= c("98.17"、"99.55"、"100"、"86.89"、"91.85"、"93.89"),主动脉与主动脉= c("98.68"、"98.77"、"100"、"94.53"、"96.07"、"97.02")),行名称= c(NA,6L),类=" Dataframe ")
1条答案
按热度按时间7cjasjjr1#
我已经解决了改变存在于 Dataframe 列表中的 Dataframe 的数据类型的问题。
Question中的所有代码都是无用的。