小编Sot*_*tos的帖子

从数据框中提取带条件的列名

dput(new)
structure(list(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16, 17, 18, 19, 20, 21, 22), A1 = c(1, 1, 1, 1, 0, 
0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), A2 = c(1, 
1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), A3 = c(0, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

r dataframe

7
推荐指数
2
解决办法
117
查看次数

计算字符串一部分的字符数

我有这个df:

dput(df)
structure(list(URLs = c("http://bursesvp.ro//portal/user/_/Banco_Votorantim_Cartoes/0-7f2f5cb67f1-22918b.html", 
"http://46.165.216.78/.CartoesVotorantim/Usuarios/Cadastro/BV6102891782/", 
"http://www.chalcedonyhotel.com/images/promoc/premiado.tam.fidelidade/", 
"http://bmbt.ro/portal/a3/_Votorantim_/VotorantimCartoes2016/0-7f2f5cb67f1-22928b.html", 
"http://voeazul.nl/azul/")), .Names = "URLs", row.names = c(NA, 
-5L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

它描述了不同的URL,我试图计算主机名的字符数,无论是实际名称(http://hostname.com/...)还是IP(http://000.000.000.000)/..).但是,如果它是一个实际名称,那么我只想要www之间的nchar.和.com.如果它是IP,那么它的所有数字和"中间"点.

上述样本数据的预期结果:

exp_outcome
1           8
2          13
3          15
4           4
5           7
Run Code Online (Sandbox Code Playgroud)

我试图做一些strsplit但无法到达的地方.

r strsplit

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

引用 dplyr 中的一系列列

让说我有一个数据帧df

    txt    A1    A2    B1    B2
1   ala    6      9    12    23
2   ata    1      3    3     11
....
Run Code Online (Sandbox Code Playgroud)

我想dplyr用于根据一系列变量的总和过滤行。我试过:

filter(df, sum(A2:B1)>10)
Run Code Online (Sandbox Code Playgroud)

....但它不起作用。

任何人都可以提出解决方案dplyr吗?是的,我知道它可以通过简单的子集来完成。

r sum filter dplyr

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

R数据表 - 创建一个新列,其中每个元素都是值列表

我已经开始使用R data.table了,我正在尝试执行以下操作:为简单起见,我们假设我有一个ArticleReadings列表,如下所示:

UserID    Time  ArticleID   Category   NumOfReading
'aaa'     7:50   'x'        'sports'   1
'bbb'     5:05   'x'        'sports'   1
'aaa'     8:40    'y'       'politics' 2
'aaa'     10:00    'z'      'sports'   3
Run Code Online (Sandbox Code Playgroud)

最终我想要一个新列,其中包含特定用户读取的所有类别的列表.在这个例子中,用户'aaa'的值将是'politics','sports'的向量,对于用户'bbb',它将是一个带有一个元素的向量:'sports'.我想要这种类型的列,因为后来我想对它进行一些操作(例如计算模式/显性类别,或显示流行的类别组合),所以我想先为每个用户获取一个唯一的向量,然后解决.我的所有试验都具有列的新值等功能,导致为每个元素单独设置矢量值,而不是矢量作为列值....例如,我的一个试验:

CategoriesList <- function(x){sort(unique(x))}
DT[,':='(UniqueCats=CategoriesList(Category)),by=userID]
Run Code Online (Sandbox Code Playgroud)

由于我是data.table和R中的用户定义函数的新手,我想我错过了将结果传递给向量的一些关键点...任何帮助将不胜感激!

r vector user-defined-functions data.table

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

R - 绘图错误对象...未找到

我尝试运行带虹膜数据集的样本行,给出对象'...'未找到错误.有什么我需要在我的环境中检查具体的吗?

library(plotly)
p <- plot_ly(iris, x = Petal.Length, y = Petal.Width,color = Species, mode = "markers")
Run Code Online (Sandbox Code Playgroud)

plot_ly中的错误(iris,x = Petal.Length,y = Petal.Width,color = Species,:object'Petal.Length'未找到

r plotly

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

为重复行分配唯一值

我想通过R中的ID为每个重复行分配值

df <- data.frame(ID=c(1,1,1,2,2,2,2,2,3,3,4),
            Code = c("A","A","A","B","B","C","C","D","A","A","C"))
> df
   ID Code
1   1    A
2   1    A
3   1    A
4   2    B
5   2    B
6   2    C
7   2    C
8   2    D
9   3    A
10  3    A
11  4    C
Run Code Online (Sandbox Code Playgroud)

我希望输出像这样,检查ID重复,然后分配第二个副本_1等等...

   ID Code Code_n
1   1    A      A
2   1    A    A_1
3   1    A    A_2
4   2    B      B
5   2    B    B_1
6   2    C      C
7   2    C    C_1
8   2    D      D …
Run Code Online (Sandbox Code Playgroud)

r

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

按百分比递增的序列

是否可以在 R 中创建一个按百分比增加值的序列?

例如:

需要从 10500 到大约 30000 的值序列,增加 1 %

所以 10500 之后的第一个值必须是10605,下一个是10711.5 .....

这在 R 中可以使用命令seq吗?或者可能有另一个功能?

就像是:

seq(10500,30000,1%)
Run Code Online (Sandbox Code Playgroud)

r

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

根据名称用另一个列表元素替换列表元素

我有两个列表 m.list 和另一个 r.list。m.list 有NA值。对于那些有NA值的人,我想用 r.list 中的元素替换它。问题是当我replace在 R 中使用函数时,它采用 r.list 的索引并返回不正确的值。以下是可重现的示例。有没有办法根据另一个列表中的元素名称替换一个列表的值?

m.list <- list(a= 1,b=NA,c=3,d=NA)

r.list <- list(a= 4,d=8,c=9)

mr.list <- replace(m.list, which(is.na(m.list)), r.list[which(is.na(m.list))])
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出 b 应该是 NA 并且 d 应该是 8:

> mr.list
$a
[1] 1

$b
[1] 8

$c
[1] 3

$d
NULL
Run Code Online (Sandbox Code Playgroud)

这是所需的输出:

$a
[1] 1

$b
[1] NA

$c
[1] 3

$d
[1] 8
Run Code Online (Sandbox Code Playgroud)

replace r list

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

根据名称有条件地乘以值

我有一个数据框,类似:

d <-
  data.frame(
    col1 = c(7, 8, 9),
    col2 = c(12, 7, 0),
    col3 = c(1, 2, 3)
  )
Run Code Online (Sandbox Code Playgroud)

和向量与数字

coefs <-
  c(
    col1  = 4,
    col2  = 6
  )
Run Code Online (Sandbox Code Playgroud)

我需要实现的是如果df中的列名等于向量列,那么我想将其乘以。如果列名不同,丢失或不相等,则应保持不变。

例如,对于上述数据帧和向量,结果应为:

result <-
  data.frame(
    col1 = c(28, 32, 36),
    col2 = c(72, 42, 0),
    col3 - c(1, 2, 3)
  )
Run Code Online (Sandbox Code Playgroud)

我认为最好的方法是使用mutate_if,但是我不确定如何匹配列名。

r dplyr

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

计算从数据帧的上一组中添加和删除的新元素

我有一个数据框

df <- data.frame(
  "Quarter" = c("Q1 2019","Q1 2019","Q1 2019","Q2 2019","Q2 2019","Q2 2019","Q2 2019","Q3 2019","Q3 2019","Q3 2019","Q3 2019","Q4 2019","Q4 2019"),
  "Name" = c("Ram","John","Jack","Ram","Rach","Will","John","Ram","Rach","Will","John","Rach","John"),
  stringsAsFactors = FALSE
) 
Run Code Online (Sandbox Code Playgroud)

我需要通过与上一季度的比较来计算每个季度添加和离开的人数。

预期的输出是

quarterYear status Count
1    Q1 2019 Added   3
2    Q1 2019 Left    0
3    Q2 2019 Added   2
4    Q2 2019 Left    1
5    Q3 2019 Added   0
6    Q3 2019 Left    0
7    Q4 2019 Added   0
8    Q4 2019 Left    2 
Run Code Online (Sandbox Code Playgroud)

我不确定如何比较两组并获得计数。

如何在 R 中实现预期输出?

r dataframe dplyr

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