微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用if条件删除特定的列/行值

如何解决使用if条件删除特定的列/行值

这可能是直截了当的,但是我正在努力挣扎。

我有一个1999年至2000年不同行业的数据框。

     fyear           industry      employees
1    1999            Agriculture   132.260
2    2000            Agriculture   154.590
3    2001            Agriculture   147.725
4    2002            Agriculture   142.098
5    2003            Agriculture    77.169
6    2004            Agriculture    82.979
7    2005            Agriculture    99.625
8    2006            Agriculture    98.195
9    2007            Agriculture    95.193
10   2008            Agriculture   104.459
11   2009            Agriculture   182.930
12   2010            Agriculture   180.648
13   2011            Agriculture   173.408
14   2012            Agriculture   181.483
15   2013            Agriculture   109.842
16   2014            Agriculture    90.177
17   2015            Agriculture    92.067
18   2016            Agriculture    83.568
19   2017            Agriculture    70.251
20   2018            Agriculture    65.082
21   2019            Agriculture    82.754
22   1999               Aircraft   653.194
23   2000               Aircraft   692.918
24   2001               Aircraft   666.751
25   2002               Aircraft   633.565
26   2003               Aircraft   687.611
27   2004               Aircraft   701.827
28   2005               Aircraft   725.825
29   2006               Aircraft   751.171
30   2007               Aircraft   744.060
31   2008               Aircraft   750.319
32   2009               Aircraft   677.598
33   2010               Aircraft   690.605
34   2011               Aircraft   712.501
35   2012               Aircraft   716.985
36   2013               Aircraft   709.918

我正在尝试创建一些增长变量

df$employeegrowth <- df$employees / lag(df$employees) - 1

这自然会导致每个“ 1999”行出现一些问题,我想用NA代替。

我正在尝试使用if公式解决此问题:

df$employeegrowth <- if(df$fyear == "1999") {
  df$employeegrowth <- "NA"
}

但这将员工增长列中的每个值替换为NA。

我不想删除整个行,因为其他列包含有价值的信息。

有人可以为此指出正确的方向吗?

解决方法

按组使用<script> import { onMount } from 'svelte'; export let value; let rendered = false; let inputValue = ''; function validate(val) { console.log('validation:',val); } onMount(() => { rendered = true; }); $: if (rendered) { updateInputValue(value); } function updateInputValue(val) { console.log('updateInputValue called!'); if (!value) { inputValue = ''; } else { inputValue = value; } } $: validate(inputValue); </script>

lag

这将为每个library(dplyr) df %>% group_by(industry) %>% mutate(employeegrowth = employees/lag(employees) - 1) # fyear industry employees employeegrowth # <int> <chr> <dbl> <dbl> # 1 1999 Agriculture 132. NA # 2 2000 Agriculture 155. 0.169 # 3 2001 Agriculture 148. -0.0444 # 4 2002 Agriculture 142. -0.0381 # 5 2003 Agriculture 77.2 -0.457 # 6 2004 Agriculture 83.0 0.0753 # 7 2005 Agriculture 99.6 0.201 # 8 2006 Agriculture 98.2 -0.0144 # 9 2007 Agriculture 95.2 -0.0306 #10 2008 Agriculture 104. 0.0973 # … with 26 more rows 中的NA的第一个值fyear

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。