就在今天早些时候,我收到了一个非常有用的答案,我遇到了一个问题,这个问题让我可以进入我的一个项目的下一个步骤。然而,我后来又被困在了这个项目中,我想知道你们中是否有人能帮我继续前进。
上下文
目前,我有一个被称为wc_match_dataframes的足球比赛的数据帧列表。以下是其中一个数据框架的样子:
type_id tourn_id day month year team_A score_A score_B team_B win loss
f wc_1934 27 5 1934 Germany 5 2 Belgium Germany Belgium我无法对最后三列( draw、drawA和drawB )的数据进行拟合,但如果匹配是平局,则draw列基本上是TRUE,如果不是,则为FALSE。在抽签的情况下,赢和输列都是由Draw填充的。如果匹配是抽签,则drawA列由team_A填充,同样,drawB列由team_B填充。
type_id要么是f,要么是q,取决于比赛是世界杯预选赛还是世界杯决赛。tourn_id指的是比赛的目的,无论是预选赛还是决赛。
总共有39个这样的数据框架,20个世界杯赛事的每一个都有一个“决赛”数据框架,19个世界杯的“预选赛”数据框架(第一届世界杯没有预选赛)。
我想做什么
我试图填充一个不同的数据帧列表,wc_dataframes中的20届世界杯的每一个国家级别的数据,而不是比赛级别。这20个数据帧中的每一个都将有进入上述锦标赛决赛的国家,它们的数据如下:
..。诸若此类。
我已经能够为每个世界杯填充第一个country列--没问题,但是我遇到了其他专栏的问题。
以下是我正在做的事情
这是我的代码的未循环版本(只适用于一个世界杯),它成功地工作了:
wc_dataframes$wc_1930$fw <- apply(wc_dataframes$wc_1930, MARGIN = 1, function(country)
sum(wc_match_dataframes$`wc_1930 f`$w == country, na.rm = TRUE))这是通过计数获胜数来成功地填充wc_dataframes$wc_1930数据帧中的决赛胜利列。
现在,当我试着在下筑巢时,在世界杯的所有年份都这样做:
lapply(names(wc_dataframes), function(year)
wc_dataframes$year$fw <- apply(wc_dataframes$year, MARGIN = 1, function(country)
sum(wc_match_dataframes$`year f`$w == country, na.rm = TRUE)))这对我不管用。我怀疑这个问题与定义year函数和在我的代码的sum部分中遇到问题有关。我来自STATA的背景,所以我更习惯于运行for循环等等。我仍然习惯了R,列表和所有的东西,所以我真的很感激你的帮助。
谢谢!
提前感谢您的帮助,祝您节日快乐!
发布于 2017-12-27 21:18:21
您需要的是输出您所替换的任何内容:
lapply(names(wc_dataframes), function(year){
wc_dataframes[[year]]$fw <- apply(wc_dataframes[[year]], MARGIN = 1, function(country)
sum(wc_match_dataframes[[paste(year,'f')]]$w == country, na.rm = TRUE));
wc_dataframes}
)https://stackoverflow.com/questions/47998361
复制相似问题