我目前有一个类似于多个ID的数据(范围直到1600左右)
id year name status
1 1980 James 3
1 1981 James 3
1 1982 James 3
1 1983 James 4
1 1984 James 4
1 1985 James 1
1 1986 James 1
1 1987 James 1
2 1982 John 2
2 1983 John 2
2 1984 John 1
2 1985 John 1
Run Code Online (Sandbox Code Playgroud)
我希望对这些数据进行子集化,以便它只有status = 1的信息和之前的状态.我也想消除多个1,只保存前1个.总之,我想要:
id year name status
1 1984 James 4
1 1985 James 1
2 1983 John 2
2 1984 John 1
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我正在弄清楚在哪一年有多少人从某个状态变为状态1.我只知道子集命令,我不认为我可以从中做这些数据subset(data, subset=(status==1)).我怎么能在那之前保存信息 …
我正在尝试对数据进行子集化,因此它只保留第一次出现的变量.我正在查看跟踪工人职业生涯的面板数据,我正在尝试对数据进行分组,以便只有在每个人都成为Boss之前才会显示.
id year name job job2
1 1990 Bon Manager 0
1 1991 Bon Manager 0
1 1992 Bon Manager 0
1 1993 Bon Boss 1
1 1994 Bon Manager 0
2 1990 Jane Manager 0
2 1991 Jane Boss 1
2 1992 Jane Manager 0
2 1993 Jane Boss 1
Run Code Online (Sandbox Code Playgroud)
所以我希望数据看起来像:
id year name job job2
1 1990 Bon Manager 0
1 1991 Bon Manager 0
1 1992 Bon Manager 0
1 1993 Bon Boss 1
2 1990 Jane …Run Code Online (Sandbox Code Playgroud) 我有一个df超过1000人的纵向数据,如下所示:
id year name status
1 1984 James 4
1 1985 James 1
2 1983 John 2
2 1984 John 1
3 1980 Amy 2
3 1981 Amy 2
4 1930 Jane 4
4 1931 Jane 5
Run Code Online (Sandbox Code Playgroud)
我正在尝试确定数据的子集id.例如,我有一个dd由id我想要分组的s 组成的向量:
dd<-c(1,3)
Run Code Online (Sandbox Code Playgroud)
我尝试过以下但是没有用,例如:
subset<-subset(df, subset(df$id==dd))
Run Code Online (Sandbox Code Playgroud)
要么
subset<-subset(df, subset(unique(df$id))==dd))
Run Code Online (Sandbox Code Playgroud)
要么
subset<-df[which(unique(df$id)==dd),]
Run Code Online (Sandbox Code Playgroud)
或者我试过一个for循环
for (i in 1:2){
subset<-subset(df, subset=(unique(df$id)==dd[i]))
}
Run Code Online (Sandbox Code Playgroud)
是否有办法只选择ids与矢量中的数字相匹配的行dd?
我希望复制一个列表超过1000次,然后附加到一个更大的列表.
例如:
a = ['1','2','3','4]
Run Code Online (Sandbox Code Playgroud)
复制此列表然后将其嵌套一百次:
output = [['1','2','3','4],['1','2','3','4],['1','2','3','4],['1','2','3','4],['1','2','3','4].....]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只遇到过*2,这不是我想要的.
我想迭代列表中的子列表以创建一个字典,其中子列表的元素是键,广告值都是0.
例:
keys = [['desk','lamp','printer'],['mouse','chair','desk','pencil']]
Run Code Online (Sandbox Code Playgroud)
我想要输出:
output = [{'desk':0,'lamp':0,'printer':0},{'mouse':0,'chair':0,'desk':0,'pencil':0}]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但没有奏效:
d = {}
output= []
for i in range(len(keys)):
for w in keys[i]:
output.append(d[w] = 0)
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个时,我收到一条消息关键字不能成为表达式.
由于我在键的子列表中有不同的元素,我该怎么做?
strings = ['I have a bird', 'I have a bag and a bird', 'I have a bag']
words = ['bird','bag']
Run Code Online (Sandbox Code Playgroud)
我想在列表中找到包含bird和bag的字符串strings,无论顺序如何.所以只有第二个元素的结果strings应该是真的,其余的应该是假的.
我想要的输出:
False
True
False
Run Code Online (Sandbox Code Playgroud)
words不一定需要存储在列表中,我知道regex可以做类似的事情,但我更愿意使用其他方式,regex因为我的单词是普通话,需要复杂使用正则表达式而不是英语.
我试图将图例放在情节之外,xpd=TRUE但图例一直在情节内绘制。我怎样才能解决这个问题?
x = c(0,0,1,1,1)
y = c(0.4991,1.1423,1.2258,1.158,0.5148)
dat<-cbind(x,y)
point_shape = c(10,15,10,15,1)
dat<-data.frame(x,y,point_shape)
myTicks<-c(0,1)
plot(dat[,1],dat[,2], yaxt="n", xaxt="n", xlab="", ylab="",pch = dat$point_shape)
abline(0.4991,0.7267)
abline(1.1423,0.0157)
abline(0.4991,0.0157,lty=2)
axis(side = 1, at = myTicks)
axis(side = 2, at = myTicks)
legend("bottomleft", legend = c("apple", "orange", "tree"),
bty = "n", xpd=FALSE, mar(c(7,7,7,7)), cex = 1, pch = c(10, 15, 1))
Run Code Online (Sandbox Code Playgroud) 我正在尝试对矩阵进行子集化,以便仅获得第一个变量大于第二个变量的矩阵。我有一个矩阵out,它是一个3000x2矩阵。
我试过
out<-out[out[,1] > out[,2]]
Run Code Online (Sandbox Code Playgroud)
但这完全消除了 row.names,并且我得到了一串 1 到 3000 之间的整数。有没有办法保留row.names?
我有一个非常简单的问题,我似乎无法弄清楚。我想在一张图中绘制两个方程。我试过了,add = TRUE但这似乎不起作用。
curve(0.044*x+1.638)
curve(0.3438*x+0.5155, add=TRUE)
Run Code Online (Sandbox Code Playgroud) 我有多个字符串,其中单词用逗号或句点分割:
string = ['apple,pear,grapes,carrot.cabbage,veggies.fruit,yard']
Run Code Online (Sandbox Code Playgroud)
我想根据逗号和句点拆分它:
string = ['apple','pear','grapes','carrot','cabbage','veggies','fruit','yard']
Run Code Online (Sandbox Code Playgroud)
我只知道如何为 re.split 使用一个条件:
re.split(',',string)
Run Code Online (Sandbox Code Playgroud)
这不会拆分中间有句点的单词。如何拆分整个字符串,以便在中间有逗号或句点时拆分单词?
这可能是一个非常基本的问题,但我意识到我不明白一些事情。
在 for 循环中追加新内容时,如何提出条件并仍然追加该项目?
例如:
alist = [0,1,2,3,4,5]
new = []
for n in alist:
if n == 5:
continue
else:
new.append(n+1)
print(new)
Run Code Online (Sandbox Code Playgroud)
让我明白
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
如何得到
[1, 2, 3, 4, 5, 5] # 4 is incremented, 5 is added 'as is'
Run Code Online (Sandbox Code Playgroud)
本质上,我想告诉 python 不要经历n+1when n==5。
这是唯一的解决方案吗?将 n==5 单独附加到列表中,然后将新的和单独的列表相加?
r ×6
python ×5
list ×3
plot ×2
row ×2
append ×1
dictionary ×1
for-loop ×1
legend ×1
matrix ×1
performance ×1
python-3.x ×1
regex ×1
split ×1
subset ×1