小编Fre*_*red的帖子

将多个CSV文件读入单独的数据框

假设我们在目录C:\ R\Data中有文件file1.csv,file2.csv,...和file100.csv,我们希望将它们全部读入单独的数据框(例如file1,file2,...和file100).

这样做的原因是,尽管具有相似的名称,但它们具有不同的文件结构,因此将它们放在列表中并不是很有用.

我可以使用lapply但返回包含100个数据帧的单个列表.相反,我想在全球环境中使用这些数据框.

如何直接将多个文件读入全局环境?或者,或者,如何将数据框列表的内容解压缩到其中?

csv r file lapply

29
推荐指数
6
解决办法
6万
查看次数

使用ggplot2时如何更改箱图的顺序?

从这个其他的这一个问题,一个.我无法在那里实施答案.

限定:

df2 <- data.frame(variable=rep(c("vnu.shr","vph.shr"),each=10),
        value=seq(1:20))
Run Code Online (Sandbox Code Playgroud)

情节:

require(ggplot2)
qplot(variable,value, data=df2,geom="boxplot")+
geom_jitter(position=position_jitter(w=0.1,h=0.1))
Run Code Online (Sandbox Code Playgroud)

我想以相反的顺序制作箱形图(例如左侧的一个,依此类推).

我曾尝试使用重新排序的因素的各种方式levels,ordered,relevel,rev等等,但我似乎根本无法得到正确的语法.

r ggplot2 boxplot r-factor

24
推荐指数
2
解决办法
6万
查看次数

如何在R中创建,构建,维护和更新数据码本?

为了复制,我喜欢为每个数据帧保留一个包含元数据的码本.数据码本是:

书面或计算机化列表,提供将包含在数据库中的变量的清晰而全面的描述. Marczyk等(2010)

我想记录变量的以下属性:

  • 名称
  • 描述(标签,格式,比例等)
  • 来源(例如世界银行)
  • 源媒体(访问的网址和日期,CD和ISBN,或其他)
  • 磁盘上源数据的文件名(合并代码簿时有帮助)
  • 笔记

例如,这是我实现的用于记录数据框mydata1中具有8个变量的变量:

code.book.mydata1 <- data.frame(variable.name=c(names(mydata1)),
     label=c("Label 1",
              "State name",
              "Personal identifier",
              "Income per capita, thousand of US$, constant year 2000 prices",
              "Unique id",
              "Calendar year",
              "blah",
              "bah"),
      source=rep("unknown",length(mydata1)),
      source_media=rep("unknown",length(mydata1)),
      filename = rep("unknown",length(mydata1)),
      notes = rep("unknown",length(mydata1))
)
Run Code Online (Sandbox Code Playgroud)

我为我读过的每个数据集写了一个不同的代码簿.当我合并数据帧时,我还将合并其相关代码簿的相关方面,以记录最终数据库.我这样做主要是复制粘贴上面的代码并更改参数.

metadata r data-management

23
推荐指数
4
解决办法
4177
查看次数

奇怪的字符:R和Windows语言环境的交互?

WinXP-x32,R-2.13.0

亲爱的清单,

我有一个问题(我认为)与Windows和R之间的交互有关.

我正在试图用夏威夷群岛上的数据写一张桌子.这是我的R代码:

library(XML)
u <- "http://en.wikipedia.org/wiki/Hawaii"
tables <- readHTMLTable(u)
Islands <- tables[[5]]
Run Code Online (Sandbox Code Playgroud)

输出是(第一组列):

      Island            Nickname                                                                  > > Islands
      Island            Nickname                                                                  > > Location 1    Hawaiʻi[7]      The Big
Run Code Online (Sandbox Code Playgroud)

岛屿19°34°N 155°30°W/19.567°N 155.5°W/ 19.567; -155.5 2 Maui [8] The Valley Isle 20°48°N 156°20°W/20.8°N 156.333°W/ 20.8; -156.3333KahoÊ»olawe [9]目标岛20°33°N 156°36°ï»¿/20.55°N 156.6°W/ 20.55; -156.64LÄnaÊ»i [10]菠萝岛20°50°N 156°56°W/20.833°N 156.933°W/ 20.833; -156.9335MolokaÊ»i [11]友情岛21°08°N 157°02°W/21.133°N 157.033°W/ 21.133; -157.033 6Ê»ahu [12]聚集地21°28°N 157°59°W/21.467°N 157.983°W/ 21.467; -157.983 7KauaÊ»i [13] The Garden Isle 22°05'N 159°30°W/22.083°N 159.5°W/ 22.083; -159.5 8NiÊ»ihau [14] The Forbidden …

windows locale localization r

12
推荐指数
1
解决办法
3900
查看次数

拆分字符串向量并将结果元素的子集粘贴到新向量中

限定

z<- as.character(c("1_xx xx xxx_xxxx_12_sep.xls","2_xx xx xxx_xxxx_15_aug.xls"))
Run Code Online (Sandbox Code Playgroud)

这样的

> z
[1] "1_xx xx xxx_xxxx_12_sep.xls" "2_xx xx xxx_xxxx_15_aug.xls"
Run Code Online (Sandbox Code Playgroud)

我想创建一个向量w ^这样

> w
[1] "1_12_sep" "2_15_aug"
Run Code Online (Sandbox Code Playgroud)

也就是说,用_分割z的每个元素然后连接元素1,4,5,从后者中删除.xls.

我可以管理拆分部分,但不确定要提供什么功能,例如"

w <- as.character(lapply(strsplit(z,"_"), function(x) ???))
Run Code Online (Sandbox Code Playgroud)

string split r vector

11
推荐指数
3
解决办法
9855
查看次数

使用多个变量和一些时间不变的方式从宽到面重塑数据框

这是Stata在一步中处理的数据分析中的基本问题.

使用时间不变数据(x0)和2000年和2005年的时变数据(x1,x2)创建一个宽数据框:

d1 <- data.frame(subject = c("id1", "id2"),  
x0 = c("male", "female"),  
x1_2000 = 1:2,   
x1_2005 = 5:6,  
x2_2000 = 1:2,  
x2_2005 = 5:6    
) 
Run Code Online (Sandbox Code Playgroud)

ST

subject x0 x1_2000 x1_2005 x2_2000 x2_2005  
1     id1 male         1       5       1       5  
2     id2 female       2       6       2       6  
Run Code Online (Sandbox Code Playgroud)

我想像面板一样塑造它,所以数据看起来像这样:

        subject     x0 time x1 x2
1     id1   male 2000  1  1
2     id2 female 2000  2  2
3     id1   male 2005  5  5
4     id2 female 2005  6  6
Run Code Online (Sandbox Code Playgroud)

我可以用reshapest 做到这一点 …

r panel data-manipulation reshape stata

8
推荐指数
1
解决办法
9384
查看次数

创建一个捕获组最常出现的变量

限定:

df1 <-data.frame(
id=c(rep(1,3),rep(2,3)),
v1=as.character(c("a","b","b",rep("c",3)))
)
Run Code Online (Sandbox Code Playgroud)

ST

> df1
  id v1
1  1  a
2  1  b
3  1  b
4  2  c
5  2  c
6  2  c
Run Code Online (Sandbox Code Playgroud)

我想创建一个第三个变量freq包含最常见的观察v1idST

> df2
  id v1 freq
1  1  a    b
2  1  b    b
3  1  b    b
4  2  c    c
5  2  c    c
6  2  c    c
Run Code Online (Sandbox Code Playgroud)

r frequency count data-manipulation data-management

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

读取多个.gpx文件

假设我有许多.gpx文件(这些文件包含来自Garmin eTrex的GPX航路点数据).我想用不同的名称将它们加载到R中并操纵它们.

我可以这样读一个文件:

library(maptools)
gpx.raw <- readGPS(i = "gpx", f = "file1_w_12_f_ddf.gpx", type="w")
Run Code Online (Sandbox Code Playgroud)

假设我想将其中的一些读入内存.我可以尝试for循环:

files <- list.files(".",pattern = "*.gpx")
for(x in files){

    #Create new file name
    temp <- strsplit(x,"_",fixed=TRUE)
    visit.id <- sapply(temp,FUN=function(x){paste(x[1],x[4],substr(x[5],1,3),sep="_")})

    #read file with new filename
    assign(visit.id, readGPS(i = "gpx", f = x, type="w"))
}
Run Code Online (Sandbox Code Playgroud)

在程序上运行会产生以下错误:

read.table出错(con < - textConnection(gpsdata),fill = TRUE,...):输入中没有可用的行另外:警告消息:运行命令'C:\ PROGRA~2\GPSBabel\gpsbabel.exe - w -i gpx -f file1_w_12_f_ddf.gpx -o tabsep -F - '状态为1

请注意,我能够自己读取此文件,因此它似乎与文件本身无关,而是在循环中运行readGPS.

一般来说,我仍然觉得R处理像上面的x这样的变量非常困惑.我不知道如何从独立的情况下修改参数readGPS f = "file1_w_12_f_ddf.gpx":它应该是x …

gis gps loops r

5
推荐指数
2
解决办法
2991
查看次数

使用列表中的数据框:删除变量,添加新变量

使用两个数据帧df1df2定义列表dats

dats <- list( df1 = data.frame(a=sample(1:3), b = sample(11:13)),
    df2 = data.frame(a=sample(1:3), b = sample(11:13)))

> dats
$df1
  a  b
1 2 12
2 3 11
3 1 13

$df2
  a  b
1 3 13
2 2 11
3 1 12
Run Code Online (Sandbox Code Playgroud)

我想在每个数据框中删除变量a.接下来,我想添加一个变量,其中包含来自外部数据帧的每个数据帧的id,如:

ids <- data.frame(id=c("id1","id2"),df=c("df1","df2"))
> ids
  id  df
1 id1 df1
2 id2 df2
Run Code Online (Sandbox Code Playgroud)

为了放弃不必要的变量,我试着没有运气:

> dats <- lapply(dats, function(x) assign(x, x[,c("b")]))  
> Error in assign(x, x[, c("b")]) : invalid first …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation lapply data-management

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

如何在格子图中按因子绘制两条线?

限定:

df <- data.frame(
        line1 = rep(seq(1,5,by=1),2), 
        line2 = rep(seq(2,6,by=1),2),
        index = rep(seq(1,5,by=1),2),
        factor=rep(c("a","b"),each=5))
Run Code Online (Sandbox Code Playgroud)

其中line1line2是两个变量,比如身高和体重.

这是我想要的每个面板的简单样式(我还想更改点标记的大小,但不使用如何):

plot(df$line1[df$factor=="a"], type = "o", ylim=c(0,6))
lines(df$line2[df$factor=="a"], type = "o", lty=2, pch=0)
Run Code Online (Sandbox Code Playgroud)

当我尝试这个:

library(lattice)
xyplot(c(line1,line2)~index|factor,data=df,type="o")
Run Code Online (Sandbox Code Playgroud)

该程序将所有点视为属于一行.

此外,我不知道如何提供绘图样式的参数来获得所需的结果.

PS1.令人惊讶的是,我已经用Google搜索并发现了许多散点图(线性拟合,密度等)和格子图的直方图示例,但这不是我想要做的简单事情之一.

PS2.我想标记这个问题,trellis但没有声誉点来创建标记.有志愿者吗?

r ggplot2 lattice trellis

3
推荐指数
1
解决办法
1871
查看次数

使R安装自包含/独立于用户

我试图让R忽略c:\ users \ name \ documents并完全独立/可移植

这是我的目录结构:

.../R/R-2.1.2.2/...
.../R/r_user/
.../R/libs_site/
Run Code Online (Sandbox Code Playgroud)

我更新了Rprofile.site如下:

# Set the working directory
setwd( file.path( R.home() , ".." , "r_user" ) )

# set the home directory
Sys.setenv(HOME=file.path( R.home() , ".." , "r_user" )  )

# Set the site library folder
.Library.site = file.path( R.home() , ".." , "libs_site" )
Run Code Online (Sandbox Code Playgroud)

当R启动时,我运行.libPaths(),但仍然看到c:/ users / ...

因此,也许R不是按照上面的Sys.setenv更新?解决方案?

r shared-libraries

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

使用每个变量上的不同函数按组折叠数据

限定

df<-read.table(textConnection('egg 1 20 a
                        egg 2 30 a
                        jap 3 50 b
                        jap 1 60 b'))
Run Code Online (Sandbox Code Playgroud)

ST

> df
   V1 V2 V3 V4
1 egg  1 20  a
2 egg  2 30  a
3 jap  3 50  b
4 jap  1 60  b
Run Code Online (Sandbox Code Playgroud)

我的数据没有因素,所以我将因子转换为字符:

> df$V1 <- as.character(df$V1)
> df$V4 <- as.character(df$V4)  
Run Code Online (Sandbox Code Playgroud)

我希望通过V1保持"折叠"数据框:

  • V2的最大值
  • V3的平均值
  • V4的模式(这个值实际上不会在V1组中发生变化,因此,第一个,最后一个等也可能会发生变化.)

请注意这是一个普遍的问题,例如我的数据集要大得多,我可能希望在折叠时使用不同的函数(例如,last,first,min,max,variance,st.dev.等).因此函数参数可能很长.

在这种情况下,我想要输出表单:

> df.collapse
   V1 V2 V3 V4
1 egg  2 25  a
2 jap  3 55  b
Run Code Online (Sandbox Code Playgroud)

r data-manipulation collapse data-management dataframe

1
推荐指数
2
解决办法
2411
查看次数