- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
全部,
我工作的公司给了我这些数据供我使用。简而言之,就是以公司为横截面单位,时间单位为会计年度的TSCS数据。每个公司都有不同的账户。我有兴趣创建给定公司在每个帐户上花费的总金额。
我可以提供以下数据的简单说明。让 firm
成为感兴趣的横截面单位。每个 firm
都有公司花钱的各种账户。有些账户是所有公司通用的,有些是独一无二的。并非每个公司
在给定年份都有钱花在帐户上。事实上,有些人直到后来的数据才符合账户资格,而其他人则退出了(因此,面板数据可以被认为是不平衡的)。因此,我提供的数据中的 NA 可以被视为 0,尽管这有点问题。一些公司在特定年份符合资格,但没有在账户中收到钱。其他公司因退出或延迟进入而没有资格。
数据是这样的,给我的是宽幅格式。这是用于说明的简化版本。在此图中,firm=B
在 1990 财年不符合帐户资格,而 firm=C
在 1992 财年退出。
firm account FY1990 FY1991 FY1992
A Account 1 500 900 1000
A Account 2 30 40 40
A Account 3 NA 60 20
A Account 4 NA 35 NA
B Account 1 NA 340 60
B Account 2 NA 500 800
B Account 3 NA 800 NA
B Account 4 NA 60 1000
C Account 1 1000 400 NA
C Account 5 500 60 NA
C Account 8 60 1000 NA
D Account 1 400 400 400
D Account 2 NA 1000 1000
D Account 3 300 40 300
D Account 6 NA 300 300
D Account 7 900 900 1000
D Account 8 1000 1200 1500
我想做的(并且被告知要做的)是修改这些数据,使其看起来像这样:
firm account FY1990 FY1991 FY1992
A Account 1 500 900 1000
A Account 2 30 40 40
A Account 3 NA 60 20
A Account 4 NA 35 NA
A TOTAL 530 1035 1060
B Account 1 NA 340 60
B Account 2 NA 500 800
B Account 3 NA 800 NA
B Account 4 NA 60 1000
B TOTAL NA 1700 1860
C Account 1 1000 400 NA
C Account 5 500 60 NA
C Account 8 60 1000 NA
C TOTAL 1560 1460 NA
D Account 1 400 400 400
D Account 2 NA 1000 1000
D Account 3 300 40 300
D Account 6 NA 300 300
D Account 7 900 900 1000
D Account 8 1000 1200 1500
D TOTAL 2600 3840 4500
我可以在 Excel 或其他一些电子表格程序中同样轻松地完成此操作,但这会很乏味,而且与使用 R 进行编程相比,它会引发更多的人为错误。我不反对创建一个包含总计的新数据框,而不是尝试在给定公司的所有账户下方添加一行。将给定公司在给定财政年度不符合账户资格的总数设为 0 可能更容易。接下来我总是可以将一些零重新编码为 NA,并自动执行该过程。
我的假设是这需要一个循环,但我是 R 编程的新手。任何输入将不胜感激。
此图的可重现代码如下。
firm <- c("A","A","A","A","B","B","B","B","C","C","C","D","D","D","D","D","D")
account <- c("Account 1","Account 2","Account 3","Account 4","Account 1","Account 2","Account 3","Account 4","Account 1","Account 5","Account 8","Account 1","Account 2","Account 3","Account 6","Account 7","Account 8")
FY1990 <- c(500,30,NA,NA,NA,NA,NA,NA,1000,500,60,400,NA,300,NA,900,1000)
FY1991 <- c(900,40,60,35,340,500,800,60,400,60,1000,400,1000,40,300,900,1200)
FY1992 <- c(1000,40,20,NA,60,800,NA,1000,NA,NA,NA,400,1000,300,300,1000,1500)
Data=data.frame(firm=firm, account=account, FY1990=FY1990, FY1991=FY1991, FY1992=FY1992)
summary(Data)
Data
最佳答案
这是一个 data.table
方法:
library(data.table)
dt <- data.table(Data)
dt[, rbind(.SD,
c("TOTAL",
lapply(.SD[, grepl("^FY[0-9]+", names(.SD)), with = F],
function(x){sum(x, na.rm = !all(is.na(x)))}
)),
use.names = F),
by = firm]
其工作方式如下:我们迭代公司 (by = firm
),并为每个公司堆叠 (rbind
)...
.SD
) "TOTAL"
开头的向量,其余部分由那个长的 lapply
调用创建。lapply
一次仅处理与一家公司相关的数据。此数据存储在上面提到的特殊临时数据表 .SD
中。列名也可以直接命名(但本例中没有)。
lapply
调用的工作方式如下:我们迭代一个向量列表(通过选择名称通过我们的 grepl
正则表达式测试的列来选择),并且对于每个向量vector 我们应用 sum
函数的特殊变体。
sum 函数的这个变体着眼于完整的向量 x
,其中再次 - 这个向量是从我们正在迭代的列表中选择的,并且一次只有与一个公司相关联的行 - - 并检查 x
中是否有任何非 NA
条目(即,如果 !all(is.na(x))
) .如果有,则将这些条目相加,将所有 NA
视为零(因为 na.rm=TRUE
);如果不是,它返回 NA
(因为 na.rm=FALSE
并且我们有 NA
)。
有关 na.rm
参数的详细信息,请查看 ?sum
。同样,可以通过搜索 ?term
或 ? “术语”
。
by=firm
选项然后堆叠公司的结果并将“firm”添加为第一列。
这是结果:
firm account FY1990 FY1991 FY1992
1: A Account 1 500 900 1000
2: A Account 2 30 40 40
3: A Account 3 NA 60 20
4: A Account 4 NA 35 NA
5: A TOTAL 530 1035 1060
6: B Account 1 NA 340 60
7: B Account 2 NA 500 800
8: B Account 3 NA 800 NA
9: B Account 4 NA 60 1000
10: B TOTAL NA 1700 1860
11: C Account 1 1000 400 NA
12: C Account 5 500 60 NA
13: C Account 8 60 1000 NA
14: C TOTAL 1560 1460 NA
15: D Account 1 400 400 400
16: D Account 2 NA 1000 1000
17: D Account 3 300 40 300
18: D Account 6 NA 300 300
19: D Account 7 900 900 1000
20: D Account 8 1000 1200 1500
21: D TOTAL 2600 3840 4500
firm account FY1990 FY1991 FY1992
您必须先安装并加载 data.table
包。
关于r - 使用 R 对面板数据中横截面单位的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16655281/
我有 2 张 table ; item_in(item_id,unit) item_out(item_id,unit) 现在假设我想知道为每个项目插入了多少个单元,我只是查询 select sum(u
API 浏览器中有 3 个速率限制类别: 如果我使用 Youtube 数据 API(其中跟随 implicit OAuth grant flow)创建客户端 Web 应用程序,我是否仍被限制为总共 1
我正在使用一个 postgresql 表,该表包含许多带有 GEOMETRY(Point, 4326) 的行。使用 ST_SnapToGrid 函数和 DISTINCT 选择,我只根据显示的 map
我对 C++ 和 Cppunit 都很陌生。我正在尝试编译一个小的 cppunit 测试。但是,我没有成功。 qwerty@qwerty:~/chessgame/src$ g++ -Wall Coor
我注意到 REM 单位可用于元素的大小,而不仅仅是字体大小。并且对 HTML 字体大小属性非常有用。 html { font-size:1vw } @media all and (max-width:
我试图在 Shapely 中找到线串的长度(以米为单位),但似乎无法达到预期的结果。几乎可以肯定我在坐标系方面犯了一些错误,但我无法弄清楚。 这是单行的一些简化代码: from shapely.geo
对于大量的物种数据集,我试图计算给定月份集的圆形平均值,例如对于从 3 月到 7 月开花的物种,我想知道开花的平均月份(即 5 月),以及围绕平均值的方差。 给定月份是循环的,因此 12 月到 2 月
我还应该在单元测试中释放对象吗? 我注意到在Apple的“iPhoneUnitTests”示例项目中,设置方法中的对象是[[object alloc] init],但从未在单元测试中的任何地方发布?
我目前正在使用 OpenGL 进行开发,并使用米作为我自己的单位,即 20 厘米宽的三角形为 0.2。然而 OpenGL 似乎对这些数字进行了舍入,最终的形状并不完全符合我的意愿。这在 OpenGL
我的问题与对信号进行频谱分析或将信号放入 FFT 并使用合适的数值包解释结果的物理意义有关, 具体: 获取一个信号,例如时变电压 v(t) 将其放入 FFT 中(您将得到复数序列) 现在取模 (abs
在深入研究代码后,我意识到 Fabricjs Text 对象的 fontSize 是在 PIXELS 中测量的。在我的项目中,有时我需要使用点而不是像素。 当指定单位时,我只在代码中找到一个位置,此片
在我的应用程序中,我尝试使用,RentModel.find({prop_location : { $near : [msg.lat, msg.lng],$maxDistance : 500}},函数(
我正在开发我的第一个 LibGdx (Scene2d + Box2d) 游戏,这对我来说是一个全新的领域,但仍然对一些事情感到有点困惑,尤其是关于单位。已经看到了几种不同的处理方法,但仍然不确定哪种方
我正在寻找一个 MySQL 查询(子查询很好),它将以下列格式获取过去一年中每个订单的单位分布: units_per_order | number_of_orders |
我正在使用 Highcharts生成折线图。 我遇到了 numberFormat 的问题: var test = 15975000; numberFormat(test, 0,',','.'); 结果
我正在尝试创建一些用户定义的类型来表示单位,以便我可以强类型化函数参数。例如,长度为毫米,速度为毫米每秒,加速度为毫米每秒等。 到目前为止我已经这样做了: template struct Value
谁能解释一下最低精度的 ULP 单位?我有如下定义,但还是不清楚 “表示分数时的误差大小与存储的数字大小成正比。ULP 或最小精度单位定义了存储数字时可以获得的最大误差。存储的数字越大,ULP 越大”
我有一张卡片图像,我需要重复它 30 次,每次我想申请一张特定卡片的左侧位置时,它会与卡片重叠,然后再停留在一副牌的位置上。 问题是,当我将左侧位置应用于图像卡片时,它会将相同的左侧位置应用于所有卡片
有没有办法用php代码更改每个滚动条的大小。 说明:当我向下滚动时,它会下降x(50~)像素,我想将x改为20。 编辑:这是我的代码。。。 Excel "; $i=1; wh
我不知道下面的想法是否可行或不能概括它,但我想将每个计算值四舍五入到 100 单位四舍五入。 例子: double x; int x_final; ... if (x<400) x_final=400
我是一名优秀的程序员,十分优秀!