小编alv*_*opr的帖子

tidyselect 更改了在 R 中选择函数时如何引用变量名称的外部向量

tidyverse包中使用选择功能时,我开始收到警告。

例子:

library(dplyr)
set.seed(123)
df = data.frame(
  "id" = c(rep("G1", 3), rep("G2", 4), rep("G3", 3)),
  "total" = sample.int(n = 10),
  "C1" = sample.int(n=10),
  "C2" = sample.int(n=10),
  "C3" = sample.int(n=10))
cols.to.sum = c("C1", "C2")
df.selected = df %>% 
  dplyr::select(total, cols.to.sum)
Run Code Online (Sandbox Code Playgroud)

给予:

Note: Using an external vector in selections is ambiguous.
i Use `all_of(cols.to.sum)` instead of `cols.to.sum` to silence this message.
i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
This message is displayed once per session.
Run Code Online (Sandbox Code Playgroud)

如果我重构为:

df.selected = df %>% 
  dplyr::select(total, all_of(cols.to.sum))
Run Code Online (Sandbox Code Playgroud)

此行为已从 更改 …

r tidyverse tidyselect

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

在 R 中以特定顺序融化数据帧

我试图融化这个数据集:

raw1 <- c("Alpha", "2018-04-01", "566.0", "647.75", "669.08", "673.08", "675.00")
raw2 <- c("Alpha", "2018-04-02", "563.3", "651.08", "670.67", "684.58", "671.17")
mydf <- as.data.frame(rbind(raw1, raw2))
names(mydf) <-  c("name", "date", "h1", "h2", "h3", "h4", "h5")
mydf

  name       date    h1     h2     h3     h4     h5
Alpha 2018-04-01 566.0 647.75 669.08 673.08 675.00
Alpha 2018-04-02 563.3 651.08 670.67 684.58 671.17
Run Code Online (Sandbox Code Playgroud)

通过使用:

mynewdf <- melt(mydf, id.vars = c("name","date"), variable.name = "hour", value.name = "desiredName", measure.vars = names(mydf[,3:7]))
mynewdf
Run Code Online (Sandbox Code Playgroud)

我得到:

    name       date hour desiredName
1  Alpha 2018-04-01   h1 …
Run Code Online (Sandbox Code Playgroud)

r reshape dataframe melt

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

从R中的嵌套列表中提取内容

我将客户数据存储在R中的嵌套列表中,其方式与此相同:

myinventedlist <- list("LOLETE" = list("Name" = "LOLETE",
                                "location" = "Huelva",
                                "Employees" = "22",
                                "SM" = "eJeK1",
                                "Groups" = list("ABUELOs" = list("PICHI" = list("fab_name" = "Pichi (ES)", "fab_id" = "2323423ES", "fab_tarif" = "6A"),
                                                                 "PACHA" = list("fab_name" = "Pacha (AG)", "fab_id" = "1231212AG", "fab_tarif" = "6A"),
                                                                 "POCHO" = list("fab_name" = "Pocho (ED)", "fab_id" = "2132192ED", "fab_tarif" = "6A")),
                                             "PRIMOts" = list("MONGO" = list("fab_name" = "MONGO (LB)", "fab_id" = "21332238LB", "fab_tarif" = "6A"),
                                                              "MINGO" = list("fab_name" = "MINGO (NT)", "fab_id" = "22231220NT", …
Run Code Online (Sandbox Code Playgroud)

r list

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

在 Snowflake 中将 last_value() 与 group_by 一起使用,而不是作为窗口函数

我想last_value()在查询中使用 或任何类似的函数group by而不是作为窗口函数。有可能吗?

CREATE TABLE test
    (Group_id INT, Fecha DATE, Sales INT)
;

INSERT INTO test (Group_id,Fecha,Sales)
VALUES  ( 1, '2021-10-15', 100 ),
        ( 1, '2021-11-15', 90 ),
        ( 1, '2022-01-15', 95 ),
        ( 2, '2021-10-15', 50 ),
        ( 2, '2021-11-15', 60 ),
        ( 2, '2022-01-15', 70 )
;
Run Code Online (Sandbox Code Playgroud)

目前的解决方案:

 select 
      distinct 
      group_id,
      last_value(sales) over (partition by group_id order by fecha) as last_sales,
      max(sales) over (partition by group_id) as max_sales
  from test
Run Code Online (Sandbox Code Playgroud)

所需的解决方案:

  select
      group_id, 
      max(sales) …
Run Code Online (Sandbox Code Playgroud)

group-by snowflake-cloud-data-platform

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

在向量中查找先前的相同值并应用某些条件

对于每个值,myvector1我想知道mycategory前一个相同值的值myvector1,如果mystatusON,否则我会查找相应的下一个相同的值,直到它为ON.

说明看起来像这样:

  1. 对于"myvector"的给定位置,给我他的价值.
  2. 在"myvector"中查找中间上一个相同值的位置
  3. 检查相关状态.如果它是ON给我他的相关"mycategory".如果为OFF,请重复转到第2点.
  4. 将获得的"mycategory"分配给新的向量"mysolution".

给定数据集mydf我正在寻找的是DesiredSolution(我手动填写).

mydf <- structure(list(myvector1 = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 
2L, 4L, 5L, 2L, 3L, 4L, 5L, 2L, 3L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 
2L, 4L, 5L, 1L, 1L, 2L, 3L, 4L, 5L, 3L), .Label = c("0", "1", 
"2", "3", "4"), class = "factor"), mystatus = structure(c(2L, 
1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, …
Run Code Online (Sandbox Code Playgroud)

for-loop r

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

带有 Zeep 和 Python 的 SOAP 客户端中的 Bearer Token 授权标头

我是 SOAP 请求和一般编程的新手。我想访问需要持有者令牌授权才能使用其服务之一的 WSDL。

调用后我想访问的服务的信息 pyhton -mzeep *WSDL_url*

  getInfo(param1: xsd:string, param2: xsd:anySimpleType, param3: xsd:anySimpleType) -> out: ns0:ResponseCurve[]
Run Code Online (Sandbox Code Playgroud)

首先,我收到令牌:

import zeep
user = 'my_user'
userpass = 'my_pass'
token = client.service.getAuthToken(user,userpass)
Run Code Online (Sandbox Code Playgroud)

然后我想请求需要三个参数的服务 getInfo:

my_info = client.service.getInfo('param1', 'param2', 'param3')
Run Code Online (Sandbox Code Playgroud)

我从提供商那里知道,每次我想访问此服务时都需要令牌,并且在文档中,关于身份验证的标头说明了以下内容:

授权:承载 eyJhbGciOiJIUzI1N[...]

我试图将标题作为 dict 传入 _soapheaders但没有工作。

我可以使用强制请求访问服务:

def get_response_from_provider(token, param1, param2, param3):
    url = "WSDL url"
    headers = {'Authorization': 'Bearer ' + token,
               'content-type': 'text/xml'}
    body = """
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsl="uri">
        <soapenv:Header/>
        <soapenv:Body>
            <wsl:getInfo>
                <param1>""" + param1 + """</param1>
                <param2>""" + …
Run Code Online (Sandbox Code Playgroud)

python soap

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

获取 R 中的对象名称作为字符串

我有许多对象想在 R 中绘制并将它们保存到我的目录中。要分配每个图形的名称,我需要能够获取要绘制的对象的名称(作为字符串?)。

一个例子是:

setwd("C:/.../mydirectory/")
myname <- myobjectname(myobject) **I want to obtain the string of "myobject"**
png(paste(myname, ".png", sep=""))
myGraphingFunction(myobject)
dev.off()
Run Code Online (Sandbox Code Playgroud)

我已经尝试过:

myobjectname <- function(v1){
  deparse(substitute(v1))
}
Run Code Online (Sandbox Code Playgroud)

它执行我想做的事情并返回我想要的字符串。然而,当在循环中或在上图情况下使用它时,它不起作用。

我有一个带有参数“month”的函数,它将被“一月”或“二月”等替换。EG 使用该函数时:

myobjectname <- function(month) 
Run Code Online (Sandbox Code Playgroud)

在循环中,虽然变量月份现在是一月(或其他),但我得到的字符串始终是“month”。

总结:

> deparse(substitute(january))
[1] "january"

> month <- january
> deparse(substitute(month))
[1] "month"
Run Code Online (Sandbox Code Playgroud)

关于第二个案例如何返回“一月”有什么提示吗?

谢谢

r

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

在数据框列表中使用数据框名称命名列

目标:将数据帧列表中数据帧的 colname 更改为每个数据帧的名称。

在处理与其名称有关的列表和数据框时,我遇到一些问题。我准备了这个例子来澄清。希望这不是一团糟。

数据:

df1 <- data.frame(A = 1, B = 2, C = 3)
df2 <- data.frame(A = 3, B = 3, C = 2)
dfList <- list(df1,df2)
Run Code Online (Sandbox Code Playgroud)

输出:

> str(dfList)
List of 2
 $ :'data.frame':   1 obs. of  3 variables:
  ..$ A: num 1
  ..$ B: num 2
  ..$ C: num 3
 $ :'data.frame':   1 obs. of  3 variables:
  ..$ A: num 3
  ..$ B: num 3
  ..$ C: num 2
> names(dfList)
NULL
> names(dfList$df1)
NULL …
Run Code Online (Sandbox Code Playgroud)

r rename list dataframe

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