小编Sot*_*tos的帖子

如果行不按顺序,如何删除数据框中的行

我有这个数据框:

      x  year bucket       price
1  2108  2010     7       100000 
2  2108  2010     2        95000 
3  2108  2010     3        93000
4  2108  2010    14        92000
5  2108  2010    13        91000
6  2108  2010     8        90500
7  2108  2010    10        89000
8  2108  2010     5        88000
9  2108  2010     9        87000
10 2108  2010    11        86000 
11 2108  2010    16        85000 
12 2108  2010    12        84000
13 2108  2010     1        83000 
Run Code Online (Sandbox Code Playgroud)

我是按照价格排列的,但是桶的顺序不对,我想把它们拆下来,变成这样:

      x  year bucket       price
1  2108  2010     7       100000 …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

字符串在列中的操作

考虑data.frame可以说:

df <- data_frame(id = c(1, 1, 2, 2), n = c("100+", "50+", "30+", "40+"))
Run Code Online (Sandbox Code Playgroud)

n应是转换为c("100","50","30","40")通过使用str_replace()dplyr库.

我需要这样的东西来工作:

library(dplyr)
library(stringr)

df %>%
  mutate(n = str_replace("+",""))
Run Code Online (Sandbox Code Playgroud)

必须有一种适当的方法来str_replace()为具有dplyr的列应用函数.

r stringr dplyr

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

比较两个数据帧列

我在r中有两个数据帧

df1

NO     QC1     QC2      QC3     Total 
123      8       8        8     24 
124      9       8        8     25
125      9       9        9     27

df2

NO     QC1     QC2      QC3     Total 
123      7       7        7      21 
124      9       10       8      27
125      10      10       10     30
Run Code Online (Sandbox Code Playgroud)

我想将上面的数据帧与总数进行比较.将保留最大总数的行.我想要的数据帧如下

NO     QC1     QC2      QC3    Total 
123     8       8        8      24 
124     9       10       8      27
125     10      10       10     30
Run Code Online (Sandbox Code Playgroud)

NO列在两个数据帧中都是唯一的.我怎么能在R?

r

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

如何在整个数据框中使用计算值替换负值

我有一个巨大的数据帧,在不同的列中有许多负值,应该等于它们的原始值*0.5.我试图应用许多R函数,但似乎我找不到一个函数来处理整个数据帧.我想要以下(不工作)代码片段:

mydf[] <- replace(mydf[], mydf[] < 0, mydf[]*0.5)
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

有条件地删除缺失数据的行

我有一个包含一些缺失值的数据框,显示为 NA。

例如:

     V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1    4  3  6  7  2  1  2  3  4   1
2    5  5  4  3  2  1  3  7  6   7  
3    6  6  NA NA NA NA NA NA NA NA
4    5  2  2  1  7  NA NA NA NA NA
5    7  NA NA NA NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)

我想删除包含至少 80% 缺失数据的行。在这个例子中,它显然是第 3 行和第 5 行。我知道如何手动删除行,但我想要一些代码方面的帮助,因为我的原始数据帧包含 480 个变量和 1000 多行,因此是自动识别和删除行的代码>80% NA …

boolean-logic r dataframe na

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

计算两个对象的平均值

假设我们在开头有两个对象:

a <- c(2,4,6)
b <- 8
Run Code Online (Sandbox Code Playgroud)

如果我们在每个中应用mean()函数,我们得到:

> mean(a)
[1] 4
> mean(b)
[1] 8
Run Code Online (Sandbox Code Playgroud)

......这绝对正常.

如果我创建一个合并a和b的新对象...

c <- c(2,4,6,8)
Run Code Online (Sandbox Code Playgroud)

并计算其平均值......

> mean(c)
[1] 5
Run Code Online (Sandbox Code Playgroud)

...我们得到5,这是预期值.

但是,我想同时计算两个对象的平均值.我试过这种方式:

> mean(a,b)
[1] 4
Run Code Online (Sandbox Code Playgroud)

我们可以看到,它的值与预期的正确值(5)不同.我错过了什么?

r mean

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

汇总dplyr管道中的字数

我想生成一个dplyr管道中字数统计频率的频率计数摘要.它必须在dplyr管道中,因为我实际上是在查询bigrquery并且它充当dplyr管道.

假设我有这样的数据:

tf1 <- tbl_df(data.frame(row= c(1:5), body=c("tt t ttt j ss oe", "kpw eero", "pow eir sap r", "s", "oe")))
Run Code Online (Sandbox Code Playgroud)

我想得到一个关于字数的总结(类似这样):

   n_words freq
1   0    0
2   1    2
3   2    1
4   3    0
5   4    1
6   5    0
7   6    1
Run Code Online (Sandbox Code Playgroud)

但我需要在dplyr管道中执行此操作(类似于下面的操作不起作用)

###NOT WORK
tf1 %>%
wordcount(body,sep=" ", count.function=sum) 
Run Code Online (Sandbox Code Playgroud)

string r dplyr

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

计算字符串中的回文数量

我编写了下面的代码来计算给定字符串中回文字符串的数量:

countPalindromes <- function(str){
  len <- nchar(str)
  count <- 0

  for(i in 1:len){
    for(j in i:len){
        subs <- substr(str, i, j)
        rev <- paste(rev(substring(subs, 1:nchar(subs), 1:nchar(subs))), collapse = "")
        if(subs == rev){
          count <- count + 1
        }
      }
  }
  count
}
Run Code Online (Sandbox Code Playgroud)

这实际上工作正常,但代码需要以这样的方式进行优化,以便以更快的速度执行.

请提供一些方法来优化这段代码.

r palindrome

0
推荐指数
2
解决办法
471
查看次数

我可以将 floor() 用于特定数字吗?

我想要floor()下一个特定数字(不是数字,而是实际值)。例如,对于年份列表:

valid_years = c(1990,2000,2006,2012,2018) # values to round to ("snap")

input  = c(1990, 1991, 1992, 1993, 2000, 2001, 2002, 2006, 2007, 2016, 2020)
output = c(1990, 1990, 1990, 1990, 2000, 2000, 2000, 2006, 2006, 2012, 2018)
Run Code Online (Sandbox Code Playgroud)

低于(或在ceil()高于指定值的情况下)输入的行为对我来说并不重要。在我的情况下,一个好的行为是捕捉到 中的最低值valid_years,但这对我来说并不重要。

我知道我可以用 if-then-else (eg if(x < 2006) x = 2000 else if(x < 2012) x = 2006 ...)来实现这一点,但我相信有更优雅的方法来解决这个问题。

我浏览了许多“R 中的舍入”问题,但尽管有许多措辞相似的问题,但都没有找到答案,这些问题都有其独特的(不同)目标:例如,四舍五入到特定的小数步长四舍五入到某个范围内的任意数字条件舍入

r rounding floor

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

如何从列表中获取值?

我有一个尺寸统一的清单,如下所示。我想提取键的值。我该怎么做?

我通过使用像这样的names(allsum)地方隔离了钥匙allsum

`$1999
[1] 7332967

$2002
[1] 5635780

$2005
[1] 5454703

$2008
[1] 3464206`
Run Code Online (Sandbox Code Playgroud)

我想要[7332967, 5635780, 5454703, 3464206]作为输出。我尝试过,sapply但是直觉很弱。请帮忙。

for(a in allsum) {
  print(a[[1]])
}
Run Code Online (Sandbox Code Playgroud)

我试过了,它可以工作,但是我想知道我们是否可以使用某些功能或不使用任何显式循环。

我尝试使用unlist 以下操作会发生什么

c1 <- unlist(allsum) 
 #1999    2002    2005    2008 
#7332967 5635780 5454703 3464206
Run Code Online (Sandbox Code Playgroud)

我只需要大数目。如何提取?

r list

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

标签 统计

r ×10

dataframe ×3

dplyr ×2

boolean-logic ×1

floor ×1

list ×1

mean ×1

na ×1

palindrome ×1

rounding ×1

string ×1

stringr ×1