标签: mutated

R - 使用ifelse语句在不同列上分配数字的份额

我有以下数据集:

observation <- c(1:10)
pop.d.rank  <- c(1:10)
cost.1  <- c(101:110)
cost.2  <- c(102:111)
cost.3  <- c(103:112)
all <- data.frame(observation,pop.d.rank,cost.1, cost.2, cost.3) 
Run Code Online (Sandbox Code Playgroud)

我想在三年内分配以下金额:

annual.investment <- 500
Run Code Online (Sandbox Code Playgroud)

我可以使用以下脚本在第一年执行此操作:

library(dplyr)

all <- all %>%  
 mutate(capital_allocated.5G = diff(c(0, pmin(cumsum(cost), annual.investment)))) %>%
 mutate(capital_percentage.5G = capital_allocated.5G / cost * 100) %>%
 mutate(year = ifelse(capital_percentage.5G >= 50, "Year.1",0))
Run Code Online (Sandbox Code Playgroud)

但是当我第二年尝试这样做时,考虑到前一年的投资,代码不起作用.这是我尝试在mutate循环中放置一个ifelse语句,以便它不会覆盖前一年分配的钱:

all <- all %>%  
 mutate(capital_allocated.5G = ifelse(year == 0, diff(c(0, pmin(cumsum(cost), annual.investment))), 0) %>%
 mutate(capital_percentage.5G = capital_allocated.5G / cost * 100) %>%
 mutate(year = ifelse(capital_percentage.5G >= 50, "Year.2",0)) …
Run Code Online (Sandbox Code Playgroud)

if-statement r mutated dplyr

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

Mutate - NA 处理

我已经使用了排列和变异组合来根据分组进行添加。例如,我使用了以下内容:

master_df <-group_by(master_df,asof_dt)
mutate(master_df,tot_flag=ls_flag)
Run Code Online (Sandbox Code Playgroud)

这将我的数据框 master_df 按 asof_dt 分组,然后创建 tot_flag 并按日期添加 ls_flag。

但是,我的 ls_flag 列包含 NA。

我想做以下事情:1) 找出如何添加 ls_flag,忽略任何 NA 2) 找出如何添加每天 NA 的总数。

这是完整的示例:

asof_dt<-c("2014-10-01","2014-10-01","2014-10-01","2014-10-02","2014-10-02","2014-10-02")
ls_flag<-c(1,1,NA,NA,1,1)
master_df<-data.frame(asof_dt,ls_flag)
master_df <-group_by(master_df,asof_dt)
mutate(master_df,tot_flag=sum(ls_flag))
Run Code Online (Sandbox Code Playgroud)

非常感谢!

r mutated na dplyr

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

使用dplyr过滤日期而不更改变量格式

我希望使用年份列表按日期过滤数据库

years<-c("2014")
yearsdata <- data.frame(animal=c("cow","pig"),
                        mydate=c(as.Date("2015-01-01"),
                        as.Date("2014-01-01")))
yearsdata %>% 
          mutate(mydate =format(mydate, "%Y") %>% 
          as.character()) %>%     
          filter(is.null(years) | mydate %in% years)
Run Code Online (Sandbox Code Playgroud)

上面的代码工作,让我过滤我的数据集,但它也格式化日期列.有没有办法获得我的过滤结果,而没有在完成的子集数据框中更改日期列的格式?

r filter mutated dplyr

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

如何将 match 函数与 mutate 函数一起使用?

我正在尝试在mutate(). df1假设我们从一个如下所示的数据框开始,由下面的代码生成:

  ID Status
1  1      N
2  2      Y
3  3      Y
4  4      N
5  5      Y

df1 <- data.frame(
  ID = c(1,2,3,4,5),
  Status = c("N","Y","Y","N","Y")
)
Run Code Online (Sandbox Code Playgroud)

我使用 dplyr 的mutate()函数根据最右侧“状态”列的值生成一个新列。下面是新的tmp数据帧输出和生成它的 dplyr 代码(这是一个超级简单的示例,适用于我的更大问题 - 就这样吧):

  ID Status Flag
1  1      N   No
2  2      Y  Yes
3  3      Y  Yes
4  4      N   No
5  5      Y  Yes

tmp <- 
  df1 %>% 
  mutate("Flag"=case_when(Status=="Y"~"Yes",TRUE~"No"))
Run Code Online (Sandbox Code Playgroud)

我试图在上面嵌入“匹配”函数的等效项mutate(),以便插入到 Flag 列中的值取决于df1数据帧中的 ID 与这两个附加数据帧中的 …

r match mutated dplyr

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

不确定为什么字典是变异的

通过麻省理工学院开放课件进行Python的自学,并遇到下面这段代码的问题.当我单独或在另一个函数中运行此函数时,它会改变最初传递的值'hand',我不知道为什么.我设置了两个局部变量(hand0和tester),第一个保留初始值,第二个迭代结束.然而,所有三个都改变了,而我只是期望'测试者'这样做.除了改变'hand'之外,该函数按预期工作.

(传递给函数的值在set参数中有所不同:word_list是有效英文单词列表,word是我在此函数中替换的字符串,用于测试,hand是字母及其相关计数字典.调试代码注释掉.)

def is_valid_word(word, hand, word_list):
    """
    Returns True if word is in the word_list and is entirely
    composed of letters in the hand. Otherwise, returns False.
    Does not mutate hand or word_list.

    word: string
    hand: dictionary (string -> int)
    word_list: list of lowercase strings
    """
    hand0 = hand
    tester = hand
    #display_hand(hand)
    #display_hand(tester)
    word = raw_input('test word: ')
    length = len(word)
    disc = True
    for c in range(length):
        if word[c] in tester.keys() and tester[word[c]]>0:
            #print tester[word[c]]
            #display_hand(hand)
            #display_hand(tester)
            tester[word[c]]=tester[word[c]]-1 …
Run Code Online (Sandbox Code Playgroud)

python dictionary mutated

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

标签 统计

mutated ×5

dplyr ×4

r ×4

dictionary ×1

filter ×1

if-statement ×1

match ×1

na ×1

python ×1