我尝试根据Y列中的值将位置列中的“T”值更改为“LT”或“RT”,并将“G”值更改为“LG”或“RG”。例如,两个“T”值中具有两者之间的较高Y值的那个应该是“LT”,并且具有较低Y值的那个应该是“RT”。这同样适用于“G”位置。
以下是一个示例 Dataframe :
tracking_data <- data.frame(
GameId = c("2017090700", "2017090700", "2017090700", "2017090700", "2017090700", "2017090700"),
PlayId = c("20170907000118", "20170907000118", "20170907000118", "20170907000118", "20170907000118", "20170907000118"),
Y = c(20.92333, 28.21333, 23.84333, 22.80333, 21.45333, 24.86333),
Position = c("T", "T", "QB", "RB", "G", "G")
)
以下是我想要的:
tracking_data <- data.frame(
GameId = c("2017090700", "2017090700", "2017090700", "2017090700", "2017090700", "2017090700"),
PlayId = c("20170907000118", "20170907000118", "20170907000118", "20170907000118", "20170907000118", "20170907000118"),
Y = c(20.92333, 28.21333, 23.84333, 22.80333, 21.45333, 24.86333),
Position = c("RT", "LT", "QB", "RB", "RG", "LG")
)
我该怎么做呢?这只是一个例子,在这个数据集中还有成千上万的其他行。
2条答案
按热度按时间izkcnapc1#
我不知道这是否可以推广到你的真实的数据问题,但是如果你按
GameID
,PlayID
和Position
分组,然后按Y
的升序排列它们,你应该可以将R和L粘贴到值G和T上,并得到正确的答案。创建于2023-05-16带有reprex v2.0.2
u0njafvf2#
只需对它们进行排序,并使用带有循环的矢量化替换