使用r上的循环创建和填充新列
我正在尝试编写一个循环,该循环接受一个表(表x)的一列中的变量,并将这些名称用作另一个表(表y)中的列名,然后根据某些条件填充这些列。这是我的密码。我一直在尝试使用For循环使用r上的循环创建和填充新列,r,loops,for-loop,R,Loops,For Loop,我正在尝试编写一个循环,该循环接受一个表(表x)的一列中的变量,并将这些名称用作另一个表(表y)中的列名,然后根据某些条件填充这些列。这是我的密码。我一直在尝试使用For循环 for(player in x) { y$paste0(x$player)<-ifelse(y$Playing=="True", 1, 0) } for(x中的玩家) { y$paste0(x$player)只需: # create df1 with 10 random TRUE/FALSE valu
for(player in x)
{
y$paste0(x$player)<-ifelse(y$Playing=="True", 1, 0)
}
for(x中的玩家)
{
y$paste0(x$player)只需:
# create df1 with 10 random TRUE/FALSE values
df1 <- data.frame(Player= sample(c(TRUE,FALSE),10,TRUE))
df1$playing <- sapply(df1$Player, function(x) ifelse(x==TRUE,1,0))
那就:
# create df1 with 10 random TRUE/FALSE values
df1 <- data.frame(Player= sample(c(TRUE,FALSE),10,TRUE))
df1$playing <- sapply(df1$Player, function(x) ifelse(x==TRUE,1,0))
在这种情况下,您不需要粘贴0。就我对您尝试的代码的理解而言,下面的内容可能可以完成这项工作
首先,让我们组成数据帧x
和y
set.seed(1) # make it reproducible
x <- data.frame(A = 1:5, B = rnorm(5))
y <- data.frame(Playing = sample(c("True","False"), 10, TRUE))
在这种情况下,您不需要粘贴0。就我对您尝试的代码的理解而言,下面的内容可能可以完成这项工作
首先,让我们组成数据帧x
和y
set.seed(1) # make it reproducible
x <- data.frame(A = 1:5, B = rnorm(5))
y <- data.frame(Playing = sample(c("True","False"), 10, TRUE))
请阅读请阅读我正在寻找一种比c(“TRUE”、“TRUE”、“FALSE”)方法更通用的方法,因为我有35行,需要使用不同的数据多次运行该方法。@SoccarAnalytics26您能解释更多吗?我刚刚选择了“TRUE”“TRUE”“FALSE”以近似我假设的x$player列的样子。此代码适用于任何真/假vector@SoccerAnalytics26我只是改变了我构建df1
的方式,使其更加清晰。我的player列为每个玩家分配了一个玩家ID。然后有一个单独的列,表示该玩家是否启动,这是一个T/F列。I我希望为每个球员添加一列(以他们的ID作为列名),然后根据他们是否在场上或在板凳上,用0和1填充该列。@SoccerAnalytics26查看我的更新,我想这就是你想要的。我正在寻找一种比c更通用的方式(“真”、“真”、“假”)方法,因为我有35行,并且需要使用不同的数据多次运行该方法。@SoccerAnalytics26您能解释更多吗?我刚刚选择了“TRUE”“TRUE”“FALSE”以近似我假设的x$player列的样子。此代码适用于任何真/假vector@SoccerAnalytics26我只是改变了我构建df1
的方式,使其更加清晰。我的player列为每个玩家分配了一个玩家ID。然后有一个单独的列,表示该玩家是否启动,这是一个T/F列。I我希望为每个玩家添加一列(以他们的ID作为列名)然后在栏中填入0和1,如果他们在场上或在板凳上。@SoccerAnalytics26看到我的更新,我想这就是你想要的。我想这非常接近。你知道我如何在y表中为每个球员创建一个新栏,因为每个球员都有不同的0和1(用于比赛时间)@SoccerAnalytics26上面的代码确实为x
的每一列创建了一个新列。我将编辑我的代码以使其更清晰。我认为这非常接近。你知道我如何为y表中的每个玩家创建一个新列,因为每个玩家都有不同的0和1(用于播放时间)@SoccerAnalytics26上面的代码确实为x
的每一列创建了一个新列。我将编辑我的代码以使其更清晰。
set.seed(1) # make it reproducible
x <- data.frame(A = 1:5, B = rnorm(5))
y <- data.frame(Playing = sample(c("True","False"), 10, TRUE))
for(player in names(x)) {
y[[player]] <- ifelse(y$Playing == "True", 1, 0)
}
str(y)
'data.frame': 10 obs. of 3 variables:
$ Playing: Factor w/ 2 levels "False","True": 2 2 1 2 1 2 1 1 2 1
$ A : num 1 1 0 1 0 1 0 0 1 0
$ B : num 1 1 0 1 0 1 0 0 1 0