小编Jaa*_*aap的帖子

从函数返回数据框

我在函数中有以下代码

Myfunc<- function(directory, MyFiles, id = 1:332) {
# uncomment the 3 lines below for testing
#directory<-"local"
#id=c(2, 4)
#MyFiles<-c(f2.csv,f4.csv)
idd<-id

df2 <- data.frame()

for(i in 1:length(idd)) {
  EmptyVector <- read.csv(MyFiles[i])  
  comp_cases[i]<-sum(complete.cases(EmptyVector))
  print(comp_cases[[i]])
  id=idd[i]
  ret2=comp_cases[[i]]
  df2<-rbind(df2,data.frame(id,ret2))
 }
print(df2)
return(df2)
}
Run Code Online (Sandbox Code Playgroud)

当我尝试通过选择函数内部的代码并注释掉返回时在R中运行它时,这种方法有效.我从print语句中获得了一个很好的数据框:

> df2
 id ret2
1 2  994
2 4  7112
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试df2从函数返回数据帧时,它只返回第1行,忽略所有其他值.我的问题是它在我尝试的各种值的函数内工作(用各种组合打开多个文件)而不是当我尝试返回数据帧时.请有人帮忙吗.非常感谢提前.

r function dataframe

9
推荐指数
2
解决办法
4万
查看次数

优雅的方式从数据框中删除稀有因子水平

我想按因子对数据帧进行子集化.我只想保留高于特定频率的因子水平.

df <- data.frame(factor = c(rep("a",5),rep("b",5),rep("c",2)), variable = rnorm(12))
Run Code Online (Sandbox Code Playgroud)

此代码创建数据框:

   factor    variable
1       a -1.55902013
2       a  0.22355431
3       a -1.52195456
4       a -0.32842689
5       a  0.85650212
6       b  0.00962240
7       b -0.06621508
8       b -1.41347823
9       b  0.08969098
10      b  1.31565582
11      c -1.26141417
12      c -0.33364069
Run Code Online (Sandbox Code Playgroud)

而且我想降低重复次数少于5次的因子水平.我开发了一个for循环,它正在工作:

for (i in 1:length(levels(df$factor))){
  if(table(df$factor)[i] < 5){
    df.new <- df[df$factor != names(table(df$factor))[i],] 
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,存在更快更漂亮的解决方案吗?

r subset

9
推荐指数
3
解决办法
4424
查看次数

使用hjust替换geom_text位置

我正在绘制一个堆积条形图并用于geom_text插入每个堆栈的值.我面临的困难是一些堆栈非常小/窄,因此两个堆栈的文本相互重叠,因此不是很可读.我想以一种方式调整文本定位,例如文本位置在每个堆栈之间hjust == 1hjust == -1每个堆栈之间交替,以便不会有重叠(或任何其他方法将导致可读文本).

下面是目前我在做什么的例子(dputmydf提供如下):

library(ggplot2)

ggplot(mydf, aes(x=variable, y = value, fill = Category)) + 
  geom_bar(stat="identity") +
  geom_text(aes(label = value, y = pos-(value/2)), size = 3) 
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试的是:

使用position = position_dodge(width = 0.5)position = position_jitter(h =0.5, w = 0.5),但没有造成什么,我要怎样做.

我的第一个想法是定义hjust = c(1,-1)希望它将被回收并且文本将在它们之间交替hjust == 1,hjust == -1但它会导致错误消息:

Error: Incompatible lengths for set aesthetics: size, hjust
Run Code Online (Sandbox Code Playgroud)

我也尝试过定义,size = c(3,3,3,3,3,3,3,3,3), hjust = …

r ggplot2 geom-text

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

ls()和对象()之间的区别

有什么功能之间的差异ls()objects()

我尝试了以下代码,他们给出了相同的结果

a <- 1:10
b <- letters
c <- month.abb
Run Code Online (Sandbox Code Playgroud)

结果:

> ls()
[1] "a" "b" "c"
> objects()
[1] "a" "b" "c"
Run Code Online (Sandbox Code Playgroud)

r

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

创建具有200行且没有列的空数据框

我就是这样做的:

df <- data.frame(a=1:200)
df$a <- NULL
df
Run Code Online (Sandbox Code Playgroud)

结果:

data frame with 0 columns and 200 rows
Run Code Online (Sandbox Code Playgroud)

只用一个命令就可以实现同样的目的吗?

r dataframe

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

将 HTML 表格转换为 R 数据框

<TABLE  cellspacing=1 cellpadding=7 rules=all frame=Box border=1>
<thead>
<TR>
 <TD ROWSPAN=2 ALIGN=CENTER VALIGN=CENTER>&nbsp;</TD>
 <TD COLSPAN=6 ALIGN=CENTER>1a. My peers make a positive impact my work environment.</TD>
 <TD ALIGN=CENTER>Number</TD>
</TR>
<TR>
 <TD ALIGN=CENTER>Strongly agree  <br>         </TD>
 <TD ALIGN=CENTER>Generally agree <br>         </TD>
 <TD ALIGN=CENTER>Neither agree nor<br>disagree</TD>
 <TD ALIGN=CENTER>Generally disagree<br>       </TD>
 <TD ALIGN=CENTER>Strongly disagree<br>        </TD>
 <TD ALIGN=CENTER>No basis to judge<br>        </TD>
 <TD ALIGN=CENTER>of Cases</TD>
</TR>
</thead>
<tbody>
<TR>
 <TD ALIGN=LEFT VALIGN=TOP>  Company-Wide                                     </TD>
 <TD ALIGN=RIGHT VALIGN=BOTTOM>        44.1</TD>
 <TD ALIGN=RIGHT VALIGN=BOTTOM>        44.9</TD>
 <TD ALIGN=RIGHT VALIGN=BOTTOM>         6.6</TD> …
Run Code Online (Sandbox Code Playgroud)

html r dataframe xml-parsing

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

如果满足条件,如何对连续行进行子集化

我使用R来分析包含每日最高和最低温度值的时间序列(1951-2013).数据具有以下结构:

YEAR MONTH  DAY     MAX    MIN
1985     1    1    22.8    9.4
1985     1    2    28.6   11.7
1985     1    3    24.7   12.2
1985     1    4    17.2    8.0
1985     1    5    17.9    7.6
1985     1    6    17.7    8.1
Run Code Online (Sandbox Code Playgroud)

我需要根据这个定义找出热浪的频率:连续三天或更多天的时间,每日最高和最低温度超过研究期间所有天的最高和最低温度的90%.

基本上,当Max和Min温度超过阈值时,我想要连续几天(三个或更多)的子集.输出将是这样的:

YEAR MONTH   DAY     MAX     MIN
1989     7    18    45.0    23.5
1989     7    19    44.2    26.1
1989     7    20    44.7    24.4
1989     7    21    44.6    29.5
1989     7    24    44.4    31.6
1989     7    25    44.2    26.7
1989     7    26    44.5    25.0
1989     7 …
Run Code Online (Sandbox Code Playgroud)

r subset

9
推荐指数
2
解决办法
3513
查看次数

从整个数据框中删除一个字符

我有一个包含各种列的数据框,某些列中的某些数据包含双引号,我想删除它们,例如:

ID    name   value1     value2
"1     x     a,"b,"c     x"
"2     y     d,"r"       z"
Run Code Online (Sandbox Code Playgroud)

我希望这看起来像这样:

ID    name   value1    value2
1     x      a,b,c      x
2     y      d,r        z
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

计算整数位数

我想计算数字向量x的小数点前的位数,数字大于或等于1.例如,如果向量是

x <- c(2.85, 356.01, 66.1, 210.0, 1445.11, 13.000)
Run Code Online (Sandbox Code Playgroud)

我的代码应该返回一个包含整数1,3,2,3,4,2的向量

有谁知道怎么做?

r

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

read_csv 和 read.csv 之间有什么实际区别?什么时候应该使用其中一种而不是另一种?

我经常使用逗号分隔的值,并且对read_csv()和之间的差异感到好奇read.csv()

是否有任何实际差异可以揭示两者的情境使用?

csv r readr

9
推荐指数
2
解决办法
4287
查看次数

标签 统计

r ×10

dataframe ×4

subset ×2

csv ×1

function ×1

geom-text ×1

ggplot2 ×1

html ×1

readr ×1

xml-parsing ×1