所以说我有一个非常简单的数据框:
v h ptsv ptsh
PIT NE 21 28
GB KC 31 23
CHI HOU 27 20
它包含访问者(v
)和主页(h
)列,并且得分(ptsv
,ptsh
)列得分。我想在数据框中创建一个新列,用于比较得分并输入主队或客队首字母。
我写了这段代码:
tbl2$win <- rep("x",nrow(tbl2)) <BR>
tbl2$win <- ifelse(tbl2$ptsh > tbl2$ptsv, tbl2$h, tbl2$v)
不是打印出首字母,而是打印出按字母顺序排列的数字。 R还是新手。
答案 0 :(得分:2)
CREATE FUNCTION dbo.GetAllDates(@Start DATETIME, @End DATETIME)
RETURNS
@AllDates TABLE
(
TheDate DATETIME
)
AS
BEGIN
IF @Start > @End
BEGIN
DECLARE @Temp DATETIME
SET @Temp = @Start
SET @Start = @End
SET @End = @Temp
END
WHILE @Start <= @End
BEGIN
INSERT INTO @AllDates
VALUES(@Start)
SET @Start = DATEADD(DAY, 1, @Start)
END
RETURN
END
您的第一行代码不是必需的
答案 1 :(得分:1)
factor
中有data.frame
个数据,这会使ifelse
混淆:
str(tbl2)
#'data.frame': 3 obs. of 4 variables:
# $ v : Factor w/ 3 levels "CHI","GB","PIT": 3 2 1
# $ h : Factor w/ 3 levels "HOU","KC","NE": 3 2 1
# ...
来自?ifelse
帮助页面示例:
## ifelse()剥离属性
##在使用日期和因子时非常重要
首先使用as.character
转换这些列:
tbl2[c("v","h")] <- lapply(tbl2[c("v","h")], as.character)
ifelse(tbl2$ptsh > tbl2$ptsv, tbl2$h, tbl2$v)
#[1] "NE" "GB" "CHI"