小编rp1*_*rp1的帖子

如何用数据框中的因子用LOCF填充NA,按国家/地区划分

我有以下数据框(简化),国家/地区变量作为因素,值变量具有缺失值:

country value
AUT     NA
AUT     5
AUT     NA
AUT     NA
GER     NA
GER     NA
GER     7
GER     NA
GER     NA
Run Code Online (Sandbox Code Playgroud)

以下内容生成以上数据框:

data <- data.frame(country=c("AUT", "AUT", "AUT", "AUT", "GER", "GER", "GER", "GER", "GER"), value=c(NA, 5, NA, NA, NA, NA, 7, NA, NA))
Run Code Online (Sandbox Code Playgroud)

现在,我想使用最后一次观察结果(LOCF)替换每个国家子集中的NA值.我知道命令na.locf动物园包.data <- na.locf(data)会给我以下数据框:

country value
AUT     NA
AUT     5
AUT     5
AUT     5
GER     5
GER     5
GER     7
GER     7
GER     7
Run Code Online (Sandbox Code Playgroud)

但是,该功能仅应用于按国家/地区划分的各个子集.以下是我需要的输出:

country value
AUT     NA
AUT     5 …
Run Code Online (Sandbox Code Playgroud)

r missing-data dataframe r-factor

18
推荐指数
4
解决办法
1万
查看次数

合并两个数据帧

我有以下数据框:

Date,Year,Austria,Germany,...
1969-12-31,1969,96.743,95.768,...
1970-01-30,1970,95.515,95.091,...
1970-02-27,1970,95.075,95.235,...
Run Code Online (Sandbox Code Playgroud)

最后,我想将此数据框与另一个看起来像这样的数据框合并:

Year,Country,Exp,...
1969,Austria,1,...
1970,Austria,0,...
1969,Germany,0,...
1970,Germany,1,...
Run Code Online (Sandbox Code Playgroud)

我看到它的方式,我将不得不将第一个数据框更改为以下格式:

Date,Year,Country,Exp,…
1969-12-31,1969,Austria,96.743,...
1970-01-30,1970,Austria,95.515,...
1970-02-27,1970,Austria,95.075,...
1969-12-31,1969,Germany,95.768,...
1970-01-30,1970,Germany,95.091,...
1970-02-27,1970,Germany,95.235,...
Run Code Online (Sandbox Code Playgroud)

然后,我可以使用合并功能并使用年份和国家合并它们(一对多).

我试图按照上面的建议转换数据框.但是,我能想到的唯一方法是使用一些复杂的"for"循环.如果有人采用更简单的方法,我们将不胜感激.此外,如果您认为合并这两个数据帧可以以更容易的方式完成,这也很好.

merge r dataframe

6
推荐指数
1
解决办法
1012
查看次数

减少重塑的计算时间

我有以下数据集,我想从宽到长格式重塑:

Name     Code  CURRENCY   01/01/1980   02/01/1980   03/01/1980   04/01/1980
Abengoa  4256  USD        1.53         1.54         1.51         1.52      
Adidas   6783  USD        0.23         0.54         0.61         0.62      
Run Code Online (Sandbox Code Playgroud)

这些数据包括1980年至2013年每天不同公司的股票价格.因此,我的广泛数据中有8,612列(和3,000行).现在,我使用以下命令将数据重新整形为长格式:

library(reshape)
data <- read.csv("data.csv")
data1 <- melt(data,id=c("Name","Code", "CURRENCY"),variable_name="Date")
Run Code Online (Sandbox Code Playgroud)

但是,对于大约50MB的.csv文件,它已经需要大约两个小时.计算时间不应该由弱硬件驱动,因为我在具有16GB RAM的2.7 GHz Intel Core i7上运行.有没有其他更有效的方法来做到这一点?

非常感谢!

performance r reshape

6
推荐指数
3
解决办法
380
查看次数

标签 统计

r ×3

dataframe ×2

merge ×1

missing-data ×1

performance ×1

r-factor ×1

reshape ×1