小编Chr*_*s L的帖子

识别字符串中的第一个匹配位置

我有一个字符串("00010000"),需要确定我们看到第一个"1"的位置.(这告诉我客户哪个月有效)

我有一个如下所示的数据集:

id  <- c(1:5)
seq <- c("00010000","00001000","01000000","10000000","00010000")
df <- data.frame(id,seq)
Run Code Online (Sandbox Code Playgroud)

我想为每个id创建一个标识first_month_active的新字段.

我可以使用嵌套的ifelse函数手动执行此操作:

    df$first_month_active <-
        ifelse(substr(df$seq,1,1)=="1",1,
        ifelse(substr(df$seq,2,2)=="1",2,
        ifelse(substr(df$seq,3,3)=="1",3,       
        ifelse(substr(df$seq,4,4)=="1",4,
        ifelse(substr(df$seq,5,5)=="1",5,99 ))))) 
Run Code Online (Sandbox Code Playgroud)

这给了我想要的结果:

  id  seq        first_position
  1   00010000   4
  2   00001000   5
  3   01000000   2
  4   10000000   1
  5   00010000   4
Run Code Online (Sandbox Code Playgroud)

但是,对于包含36个月的数据,这不是理想的解决方案.

我想使用带有ifelse语句的循环,但是我真的很难用语法

for (i in 1:36) {
ifelse(substr(df$seq,0+i,0+i)=="1",0+i,
}
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激

loops if-statement substring r

7
推荐指数
5
解决办法
278
查看次数

如何使用sqldf保持R格式的日期?

如何在不更改格式的情况下重命名SQLDF中的日期字段?

请参阅下面的示例,其中我的重命名日期字段"dt"将日期转换为数字.我该如何避免这种情况,或将其转换回日期?

#Question for Stack Exchange
df <- data.frame (date = c("2014-12-01","2014-12-02","2014-12-03"),
            acct = c(1,2,3))

df$date = as.Date(df$date)

library("sqldf")
sqldf('
    select 
        date as dt,
        date,
        acct
    from df ')


     dt       date acct
1 16405 2014-12-01    1
2 16406 2014-12-02    2
3 16407 2014-12-03    3
Run Code Online (Sandbox Code Playgroud)

r date sqldf

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

如何在R中使用宏变量?(类似于SAS中的%LET)

如何在R中分配宏变量?

在SAS中,我将使用以下代码

%LET DEPVAR = sales_ind

PROC REG DATA=mydata;
MODEL &DEPVAR = VAR1 + VAR2;
RUN;
Run Code Online (Sandbox Code Playgroud)

然而,在R中,我正在努力做类似的事情(这不起作用)

depvar <<- sales_ind

reg<-lm(depvar ~ var1 + var2, data=mydata)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢!

r

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

如何使用循环来抓取R中多个网页的网站数据?

我想应用一个循环来从R中的多个网页中抓取数据.我能够抓取一个网页的数据,但是当我尝试使用多个页面的循环时,我得到一个令人沮丧的错误.我花了几个小时修补,但没有用.任何帮助将不胜感激!!!

这有效:

###########################
# GET COUNTRY DATA
###########################

library("rvest")

site <- paste("http://www.countryreports.org/country/","Norway",".htm", sep="")
site <- html(site)

stats<-
    data.frame(names =site %>% html_nodes(xpath="//*/td[1]") %>% html_text() ,
         facts =site %>% html_nodes(xpath="//*/td[2]") %>% html_text() ,
         stringsAsFactors=FALSE)

stats$country <- "Norway"
stats$names   <- gsub('[\r\n\t]', '', stats$names)
stats$facts   <- gsub('[\r\n\t]', '', stats$facts)
View(stats)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在循环中写入它时,我收到一个错误

###########################
# ATTEMPT IN A LOOP
###########################

country<-c("Norway","Sweden","Finland","France","Greece","Italy","Spain")

for(i in country){

site <- paste("http://www.countryreports.org/country/",country,".htm", sep="")
site <- html(site)

stats<-
data.frame(names =site %>% html_nodes(xpath="//*/td[1]") %>% html_text() ,
         facts =site %>% html_nodes(xpath="//*/td[2]") %>% html_text() , …
Run Code Online (Sandbox Code Playgroud)

loops r rvest

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

如何在R中创建一个可以在函数和sql语句中使用的全局变量?

我想在R中定义一个可以在函数和sqldf语句中使用的全局变量.我的目标是在我的代码顶部更改我想要包含的变量 - 并在整个过程中使用它.这真的可以节省我的时间,而且我一直无法通过搜索论坛找到解决方案.

# define variable
    myvar <<- as.name('cyl')

# use within a sql statement
    library("sqldf")

    sqldf('
        select 
            avg(myvar)
        from 
            mtcars
        ')

# use within a regression
    reg<-lm(mpg ~ myvar, data=mtcars)
    summary(reg)
Run Code Online (Sandbox Code Playgroud)

r global-variables

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

标签 统计

r ×5

loops ×2

date ×1

global-variables ×1

if-statement ×1

rvest ×1

sqldf ×1

substring ×1