【发布时间】:2012-12-06 15:21:29
【问题描述】:
我有一个数据集,其中包含“年”、“公司代码”和“def - 公司是否违约”列。我遇到的问题是“def”列包含默认的“1”序列。那些“1”代表公司运营的所有年份。因此,例如,该公司从 1990 年开始运营,并在 2000 年倒闭。该列包含 10 倍“1”,即使该公司在去年(即 2000 年)违约。所以我应该为这个特定的“公司”设置列代码”只有 2000 年的“1”默认条目,而不是 1990-2000 年的默认条目。如何从“def”列中删除“1”的序列(我现在将其作为data.frame)并将“1”的最后一个条目保留为实际默认值?
我从创建垃圾箱开始:
split(data.frame[dataFrame$def == 1, ], dataFrame[dataFrame$def == 1, 'coKey])
“coKey”是“公司代码”。
我无法通过留下最后一次观察来清理数据,我也未能成功地将 bin 反转到原始数据框中,因为这样做的过程太过时了。
非常感谢您的帮助,非常感谢。
这是示例数据。
dataFrame <- structure(list(fyear = 1981:1986,
gvkey = c(1004L, 1004L, 1004L, 1004L, 1004L, 1004L),
def = structure(c(1L, 1L, 1L, 1L, 1L, 1L ),
.Label = c("0", "1"), class = "factor")),
.Names = c("fyear", "coKey", "def"),
row.names = c(NA, 6L), class = "data.frame")
【问题讨论】:
-
欢迎来到 Stack Overflow。您可以使用
dput(dataFrame)或其中的一部分dput(head(dataFrame, 30))吗?这样我们就可以准确地看到您正在处理的内容。 -
您的
def列是否看起来像1111111(单个字符串)或像c(1, 1, 1, 1, 1, 1)(1 的向量) -
谢谢贾斯汀:这是输出:> dput(head(dataMod)) structure(list(fyear = 1981:1986, gvkey = c(1004L, 1004L, 1004L, 1004L, 1004L, 1004L) , DEF = 结构(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class= "factor")), .Names = c("fyear" , "gvkey", "DEF"), row.names = c(NA, 6L), class= "data.frame")
-
对不起。 “gvkey”是 coKey=company 代码。 dataMod 是数据帧。列 DEF 是默认的“def”列(零表示无默认值,1 表示默认值)。 fyear,是给定 gvkey 的公司的财政年度。我最初的尝试是将数据帧的样本作为 jpg 文件放置,但由于它的新帐户不允许。
-
Ricardo: 是一个 1 的向量,每个对应于同一公司(如果默认)代码(coKey=cvKey 即 1004),表示从公司成立到公司移除 = 默认的年数。