gpt4 book ai didi

r - 一次将多个列更改为 as.character

转载 作者:行者123 更新时间:2023-12-05 01:22:23 26 4
gpt4 key购买 nike

我想在我的 df 上使用更长时间的数据透视表,但并非我所有的列都是 as.characters,因为我有 10 多列我需要更改,有谁知道如何在一个参数中执行此操作以节省我为所有这些年?

我的df是这样的;

fisheries_df
`Series Name` `Country Name` `1997` `1998` `1999` `2000` `2001` `2002` `2003` `2004` `2005` `2006` `2007` `2008` `2009` `2010` `2011` `2012`
1 Total fisheri… Albania 1110.8 2807.5 3057.9 3635 3597.2 4516.8 4274.6 6118.5 6473 7.71e3 7.51e3 7.36e3 8.13e3 7.85e3 7.35e3 1.23e4
2 Total fisheri… Algeria 91907… 92620 102649 11351… 134082 13480… 141376 11405… 12662… 1.46e5 1.48e5 1.42e5 1.30e5 9.52e4 1.04e5 1.08e5
3 Total fisheri… Cyprus 25788 20482 41060 70223 56606 142941 49561 82269 64933 3.35e4 5.65e3 5.40e3 5.11e3 5.55e3 5.85e3 5.66e3

我用来转换 df 的代码和错误消息如下,假设字符问题是我的问题;

fisheries_longer = pivot_longer(fisheries_df, c(3:26), c('year')) 

Error in `stop_vctrs()`:
! Can't combine `1997` <character> and `2006` <double>.
Run `rlang::last_error()` to see where the error occurred.

最佳答案

试试这个。它使用@akruns 的 values_transform() 但带有列表:参见此处:pivot_longer: values_ptypes: can't convert <integer> to <character>

library(dplyr)
library(tidyr)
df %>%
pivot_longer(
cols = -c(1:3),
names_to = "key",
values_to = "val",
values_transform = list(val = as.character))
   X.Series Name. X.Country key     val    
<int> <chr> <chr> <chr> <chr>
1 1 Total fisheri Name..1 Albania
2 1 Total fisheri X.1997. 1110.8
3 1 Total fisheri X.1998. 2807.5
4 1 Total fisheri X.1999. 3057.9
5 1 Total fisheri X.2000. 3635
6 1 Total fisheri X.2001. 3597.2
7 1 Total fisheri X.2002. 4516.8
8 1 Total fisheri X.2003. 4274.6
9 1 Total fisheri X.2004. 6118.5
10 1 Total fisheri X.2005. 6473
# ... with 24 more rows
# i Use `print(n = ...)` to see more rows
df <- structure(list(X.Series = 1:2, Name. = c("Total", "Total"), X.Country = c("fisheri", 
"fisheri"), Name..1 = c("Albania", "Algeria"), X.1997. = c(1110.8,
91907), X.1998. = c(2807.5, 92620), X.1999. = c(3057.9, 102649
), X.2000. = c(3635L, 11351L), X.2001. = c(3597.2, 134082), X.2002. = c(4516.8,
13480), X.2003. = c(4274.6, 141376), X.2004. = c(6118.5, 11405
), X.2005. = c(6473L, 12662L), X.2006. = c(7710, 146000), X.2007. = c(7510,
148000), X.2008. = c(7360, 142000), X.2009. = c(8130, 130000),
X.2010. = c(7850, 95200), X.2011. = c(7350, 104000), X.2012. = c(12300,
108000)), class = "data.frame", row.names = c(NA, -2L))

关于r - 一次将多个列更改为 as.character,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74227334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com