我有一个非常愚蠢的问题,使我失去了几个小时,因此我将其发布在这里。
我的数据看起来像这样
df<- data.frame("Reporter" = c("USA", "USA", "USA", "USA",
"Africa","Africa", "Africa","Africa"),
"Partner" = c("Africa", "Africa", "EU", "EU",
"USA", "USA", "EU", "EU"),
"Year" = c(1970, 1980, 1970, 1980, 1970, 1980,
1970, 1980),
"Flow" = c("001", "00", "1", "112", "0", "2", "23", "TOT"),
"Val" = runif(8, min=0, max=100), stringsAsFactors
= FALSE)
Flow是包含字符和数字的字符变量。这些是变量“ Val”的标识符
class(df$Flow)
我想删除“流”中具有字母的行,同时保留其余部分。
df <- df %>% filter(Flow != "TOT")
这种方法符合我的预期。 一旦我从流程中删除字母并保存数据csv,稍后就会出现问题。
write.csv(df, "df.csv")
一旦我重新上传我的数据,这将彻底改变。由于数据已存储为数字
,所以数字前面的所有0都丢失了 df2<- import("df.csv")
我也尝试过write.csv2(df, "df.csv")
,但结果没有改变。
如果我将其保存在dta中,则数据工作会重新上传一次,但我想保存在csv中
有人知道我在做什么错吗?
答案 0 :(得分:3)
您遇到的问题不是csv的编写方式,而是读回csv的方式。如果在文本编辑器中查看文件,则应该会看到前导零。
在基数R
中,您可以指定列的类,这将防止删除前导零:
> (df2 <- read.csv('df.csv', colClasses = c(Flow = 'character')))
X Reporter Partner Year Flow Val
1 1 USA Africa 1970 001 87.582979
2 2 USA Africa 1980 00 1.908992
3 3 USA EU 1970 1 41.421509
4 4 USA EU 1980 112 59.110781
5 5 Africa USA 1970 0 27.277206
6 6 Africa USA 1980 2 29.184184
7 7 Africa EU 1970 23 37.417494
答案 1 :(得分:2)
您可以使用RewriteRule ^resources/pages/forums/topic/(.*)$ resources/pages/forums/topic/index.php?topic_id=$1 [NC,L]
中的read_csv()
。它具有readr
参数,但是即使具有默认值,它也可以满足您的要求。
col_types